File: bench_java_invocation.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 (121 lines) | stat: -rw-r--r-- 2,029 bytes parent folder | download | duplicates (5)
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
require 'benchmark'
require 'java'

import java.lang.System

puts "Measure bytelist appends (via Java integration)"
5.times { 
  puts Benchmark.measure { 
    sb = org.jruby.util.ByteList.new 
    foo = org.jruby.util.ByteList.plain("foo") 
    1000000.times { 
      sb.append(foo) 
    } 
  }
}

puts "Measure string appends (via normal Ruby)"
5.times { 
  puts Benchmark.measure { 
    str = "" 
    foo = "foo" 
    1000000.times { 
      str << foo 
    } 
  } 
}

puts "Measure System.currentTimeMillis, int becoming Fixnum"
def System.bench
  x = nil
  1000000.times {
    x = currentTimeMillis
  }
end

5.times {
  puts Benchmark.measure {
    System.bench
  }
}

puts "Measure string.length, integer length to fixnum"
5.times {
  puts Benchmark.measure {
    x = ""
    1000000.times {
      y = x.length
    }
  }
}

puts "Measure java.lang.Thread#name, String entering Ruby"
JThread = java::lang::Thread
class JThread
  def bench
    x = nil
    1000000.times {
      x = name
    }
  end
end

5.times {
  puts Benchmark.measure {
    JThread.currentThread.bench
  }
}

puts "Measure ArrayList.set(fixnum, string), String leaving Ruby"
5.times {
  puts Benchmark.measure {
    str = "foo"
    alist = java.util.ArrayList.new(1)
    alist << str
    1000000.times {
      alist.set(0, str)
    }
  }
}

puts "Measure Fixnum#to_s, String being constructed"
5.times {
  puts Benchmark.measure {
    x = 1
    1000000.times {
      y = x.to_s
    }
  }
}

puts "Measure Integer.valueOf, overloaded call with a primitive"
5.times {
  puts Benchmark.measure {
    integer = java.lang.Integer
    x = 1
    1000000.times {
      integer.valueOf(x)
    }
  }
}
    
puts "Measure ArrayList<Object>.get, non-coercible type entering Ruby"
5.times {
  puts Benchmark.measure {
    list = java.util.ArrayList.new
    list.add(java.lang.Object.new)
    1000000.times {
      list.get(0)
    }
  }
}
    
puts "Measure java.lang.Object.new"
5.times {
  puts Benchmark.measure {
    1000000.times {
      Object.new
    }
  }
}