File: unique_bench.rb

package info (click to toggle)
jruby 9.4.8.0%2Bds-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 89,244 kB
  • sloc: ruby: 548,574; java: 276,189; yacc: 25,873; ansic: 6,178; xml: 6,111; sh: 1,855; sed: 94; makefile: 78; jsp: 48; tcl: 40; exp: 12
file content (50 lines) | stat: -rw-r--r-- 1,101 bytes parent folder | download | duplicates (3)
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
require 'benchmark'

TIMES = (ENV['TIMES'] || 5_000_000).to_i

Benchmark.bmbm do |x|

  ary1 = [1, 2, 3, 4, 5, 4, 3, 3]
  x.report("Array#uniq (size: #{ary1.length}) [#{TIMES}x]") do
    TIMES.times do
      ary1.uniq
    end
  end

  ary2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
  ary2.push 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16
  x.report("Array#uniq (size: #{ary2.length}) [#{TIMES}x]") do
    TIMES.times do
      ary2.uniq
    end
  end

  ary3 = [1, 2, 3, -1, -2, -3, 3, -3]
  x.report("Array#uniq(&block) (size: #{ary3.length}) [#{TIMES}x]") do
    TIMES.times do
      ary3.uniq { |e| e.abs }
    end
  end

  enum1 = ary1.to_enum
  x.report("Enumerable#uniq (size: #{ary1.length}) [#{TIMES}x]") do
    TIMES.times do
      enum1.uniq
    end
  end

  enum2 = ary2.to_enum
  x.report("Enumerable#uniq (size: #{ary2.length}) [#{TIMES}x]") do
    TIMES.times do
      enum2.uniq
    end
  end

  enum3 = ary3.to_enum
  x.report("Enumerable#uniq(&block) (size: #{ary3.length}) [#{TIMES}x]") do
    TIMES.times do
      enum3.uniq { |e| e.abs }
    end
  end

end