File: unique_bench.rb

package info (click to toggle)
jruby 9.3.9.0%2Bds-8
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 80,856 kB
  • sloc: ruby: 517,823; java: 260,094; xml: 31,930; ansic: 5,777; yacc: 4,973; sh: 1,163; makefile: 105; jsp: 48; tcl: 40; exp: 11
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