Skip to content

Commit 3c00f22

Browse files
committed
Add Array#sort.reverse vs Array#sort_by(&:-@)
1 parent 38f49f9 commit 3c00f22

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

README.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,27 @@ Comparison:
447447
Array#insert: 0.2 i/s - 262.56x slower
448448
```
449449

450+
##### `Array#sort.reverse` vs `Array#sort_by` + block [code](code/array/sort-reverse-vs-sort_by-with-block.rb)
451+
452+
```
453+
$ ruby -v code/array/sort-reverse-vs-sort_by.rb
454+
ruby 2.5.2p104 (2018-10-18 revision 65133) [x86_64-darwin13]
455+
Warming up --------------------------------------
456+
Array#sort.reverse
457+
16.231k i/100ms
458+
Array#sort_by &:-@
459+
5.406k i/100ms
460+
Calculating -------------------------------------
461+
Array#sort.reverse
462+
149.492k (±11.0%) i/s - 746.626k in 5.070375s
463+
Array#sort_by &:-@
464+
51.981k (± 8.8%) i/s - 259.488k in 5.041625s
465+
466+
Comparison:
467+
Array#sort.reverse: 149492.2 i/s
468+
Array#sort_by &:-@: 51980.6 i/s - 2.88x (± 0.00) slower
469+
```
470+
450471
### Enumerable
451472

452473
##### `Enumerable#each + push` vs `Enumerable#map` [code](code/enumerable/each-push-vs-map.rb)
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
require "benchmark/ips"
2+
3+
ARRAY = 100.times.map { rand(1_000_000_000) }
4+
5+
def fast
6+
ARRAY.sort.reverse
7+
end
8+
9+
def slow
10+
ARRAY.sort_by(&:-@)
11+
end
12+
13+
Benchmark.ips do |x|
14+
x.report('Array#sort.reverse') { fast }
15+
x.report('Array#sort_by &:-@') { slow }
16+
17+
x.compare!
18+
end

0 commit comments

Comments
 (0)