Skip to content

Instantly share code, notes, and snippets.

@bradhe
Last active December 21, 2015 18:09
Show Gist options
  • Select an option

  • Save bradhe/6345784 to your computer and use it in GitHub Desktop.

Select an option

Save bradhe/6345784 to your computer and use it in GitHub Desktop.
Test Enumerable#sort_by! vs. Enumerable#sort_by in Ruby. Results ran under MRI.
$ ruby -v
ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-darwin12.2.1]
$ ruby sort_test.rb
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Bang results: 0.8399645
Normal results: 0.8487451699999999
TIMES = 100
arr = (1..1_000_000).to_a
sort_by_bang_results = []
sort_by_results = []
def time(&blk)
start_at = Time.now
yield
Time.now - start_at
end
TIMES.times do |i|
puts i
randoms = arr.shuffle
sort_by_randoms = randoms.dup
sort_by_bang_randoms = randoms.dup
sort_by_bang_results << (time { sort_by_bang_randoms.sort_by! { |i| i } })
sort_by_results << (time { sort_by_randoms.sort_by { |i| i } })
end
puts "Bang results:\t#{sort_by_bang_results.reduce(&:+) / TIMES.to_f}"
puts "Normal results:\t#{sort_by_results.reduce(&:+) / TIMES.to_f}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment