Skip to content

Commit 36296ef

Browse files
authored
Fixes the 'planets align' condition of select.last vs reverse.detect (#233)
* Update select.last example * Fixes world aligns condition
1 parent be7e578 commit 36296ef

File tree

2 files changed

+16
-12
lines changed

2 files changed

+16
-12
lines changed

README.md

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -655,18 +655,22 @@ Enumerable#select.first: 89757.4 i/s - 4.84x slower
655655

656656
```
657657
$ ruby -v code/enumerable/select-last-vs-reverse-detect.rb
658-
ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
659-
658+
ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [arm64-darwin23]
659+
ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [arm64-darwin23]
660+
Warming up --------------------------------------
661+
Enumerable#reverse.detect
662+
8.821k i/100ms
663+
Enumerable#select.last
664+
385.000 i/100ms
660665
Calculating -------------------------------------
661-
Enumerable#reverse.detect 62.636k i/100ms
662-
Enumerable#select.last 11.687k i/100ms
663-
-------------------------------------------------
664-
Enumerable#reverse.detect 1.263M (± 8.2%) i/s - 6.326M
665-
Enumerable#select.last 119.387k (± 5.7%) i/s - 596.037k
666+
Enumerable#reverse.detect
667+
96.317k (± 6.8%) i/s (10.38 μs/i) - 485.155k in 5.060103s
668+
Enumerable#select.last
669+
3.839k (± 1.2%) i/s (260.49 μs/i) - 19.250k in 5.015198s
666670
667671
Comparison:
668-
Enumerable#reverse.detect: 1263100.2 i/s
669-
Enumerable#select.last: 119386.8 i/s - 10.58x slower
672+
Enumerable#reverse.detect: 96316.5 i/s
673+
Enumerable#select.last: 3838.9 i/s - 25.09x slower
670674
```
671675

672676
##### `Enumerable#sort` vs `Enumerable#sort_by` [code](code/enumerable/sort-vs-sort_by.rb)

code/enumerable/select-last-vs-reverse-detect.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
require 'benchmark/ips'
22

3-
ARRAY = [*1..100]
3+
ARRAY = [*1..7777]
44

55
def fast
6-
ARRAY.reverse.detect { |x| (x % 10).zero? }
6+
ARRAY.reverse.detect { |x| (x % 5).zero? }
77
end
88

99
def slow
10-
ARRAY.select { |x| (x % 10).zero? }.last
10+
ARRAY.select { |x| (x % 5).zero? }.last
1111
end
1212

1313
Benchmark.ips do |x|

0 commit comments

Comments
 (0)