File: any_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 (60 lines) | stat: -rw-r--r-- 2,118 bytes parent folder | download | duplicates (9)
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
require 'benchmark'

def bench_array(bm)
  arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

  bm.report("2m array.each, 20 Fixnum array") do
    i = 0
    while i<2_000_000
      arr.each {|e| e}
      i+=1
    end
  end

  bm.report("2m array.any?(21), 20 Fixnum array") do
    i = 0
    while i<2_000_000
      arr.any? {|e| e == 21}
      i+=1
    end
  end

  arr2 = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false]

  bm.report("2m array.any? no block, 20 boolean array") do
    i = 0
    while i<2_000_000
      arr2.any?
      i+=1
    end
  end

  arr3 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

  bm.report("2m array.any?(), 200 Fixnum array") do
    i = 0
    while i<200_000
      arr3.any? {|e| e == 1000}
      i+=1
    end
  end

end

if $0 == __FILE__
  if ARGV[0]
    ARGV[0].to_i.times {
      Benchmark.bm(40) {|bm| bench_array(bm)}
 class Array; alias_method :old_each, :each; def each(*args, &block); old_each(*args, &block); end;  end

      puts "With overriden Array#each"
      Benchmark.bm(40) {|bm| bench_array(bm)}
    }
  else
    Benchmark.bmbm {|bm| bench_array(bm)}
 class Array; alias_method :old_each, :each; def each(*args, &block); old_each(*args, &block); end;  end

    puts "With overriden Array#each"
    Benchmark.bmbm {|bm| bench_array(bm)}
  end
end