Skip to content

Commit 48ea9e2

Browse files
committed
Add Array#bsearch vs Array#find.
1 parent 0def49b commit 48ea9e2

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

README.md

+18
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,24 @@ String#downcase + ==: 3348751.8 i/s - 1.26x slower
210210

211211
### Array
212212

213+
##### `Array#bsearch` vs `Array#find` [code](code/array/bsearch-vs-find.rb)
214+
215+
```
216+
$ ruby -v code/array/bsearch-vs-find.rb
217+
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
218+
219+
Calculating -------------------------------------
220+
find 1.000 i/100ms
221+
bsearch 42.216k i/100ms
222+
-------------------------------------------------
223+
find 0.184 (± 0.0%) i/s - 1.000 in 5.434758s
224+
bsearch 577.301k (± 6.6%) i/s - 2.913M
225+
226+
Comparison:
227+
bsearch: 577300.7 i/s
228+
find: 0.2 i/s - 3137489.63x slower
229+
```
230+
213231
##### `Array#shuffle.first` vs `Array#sample` [code](code/array/shuffle-first-vs-sample.rb)
214232

215233
> `Array#shuffle` allocates an extra array. <br>

code/array/bsearch-vs-find.rb

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
require 'benchmark/ips'
2+
3+
data = [*0..100_000_000]
4+
5+
Benchmark.ips do |x|
6+
x.report('find') { data.find { |number| number > 77_777_777 } }
7+
x.report('bsearch') { data.bsearch { |number| number > 77_777_777 } }
8+
x.compare!
9+
end

0 commit comments

Comments
 (0)