Skip to content
This repository was archived by the owner on Mar 15, 2022. It is now read-only.

Commit 22751c2

Browse files
committed
Compared performance of pure-Java references vs. Java interop.
1 parent cd9191a commit 22751c2

File tree

2 files changed

+84
-1
lines changed

2 files changed

+84
-1
lines changed

lib/ref/version.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
module Ref
2-
VERSION = '1.0.5'
2+
VERSION = '2.0.0.pre1'
33
end

ref_speed_test.rb

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
#!/usr/bin/env ruby
2+
3+
require 'ref'
4+
require 'benchmark'
5+
6+
REF_CLASSES = [
7+
Ref::SoftReference,
8+
Ref::WeakReference
9+
]
10+
11+
NUM = 500_000
12+
13+
def version
14+
if defined? Ref::VERSION
15+
Ref::VERSION
16+
else
17+
gem_dir = Gem::Specification.find_by_name('ref').gem_dir
18+
File.open(File.join(gem_dir, 'VERSION'), 'r').read
19+
end
20+
rescue
21+
'unknown'
22+
end
23+
24+
puts "~~~ Ruby version: #{RUBY_VERSION}"
25+
if defined? JRUBY_VERSION
26+
puts "~~~ JRuby version: #{JRUBY_VERSION}"
27+
else
28+
puts "~~~ Ruby engine: #{RUBY_ENGINE}"
29+
end
30+
puts "~~~ Gem version: #{version}"
31+
32+
Benchmark.bm do |stats|
33+
34+
REF_CLASSES.each do |clazz|
35+
36+
puts "Benchmarking #{clazz}..."
37+
38+
ref = clazz.new('foo')
39+
value = nil
40+
41+
stats.report do
42+
NUM.times { value = ref.object }
43+
end
44+
end
45+
end
46+
47+
__END__
48+
49+
~~~ Ruby version: 1.9.3
50+
~~~ JRuby version: 1.7.18
51+
~~~ Gem version: 1.0.5
52+
user system total real
53+
Benchmarking Ref::SoftReference...
54+
0.270000 0.010000 0.280000 ( 0.114000)
55+
Benchmarking Ref::WeakReference...
56+
0.080000 0.000000 0.080000 ( 0.029000)
57+
58+
~~~ Ruby version: 1.9.3
59+
~~~ JRuby version: 1.7.18
60+
~~~ Gem version: 2.0.0.pre1
61+
user system total real
62+
Benchmarking Ref::SoftReference...
63+
1.020000 0.040000 1.060000 ( 0.410000)
64+
Benchmarking Ref::WeakReference...
65+
0.200000 0.020000 0.220000 ( 0.165000)
66+
67+
~~~ Ruby version: 2.2.0
68+
~~~ Ruby engine: ruby
69+
~~~ Gem version: 2.0.0.pre1
70+
user system total real
71+
Benchmarking Ref::SoftReference...
72+
0.610000 0.000000 0.610000 ( 0.621205)
73+
Benchmarking Ref::WeakReference...
74+
0.120000 0.000000 0.120000 ( 0.113426)
75+
76+
~~~ Ruby version: 2.1.0
77+
~~~ Ruby engine: rbx
78+
~~~ Gem version: 2.0.0.pre1
79+
user system total real
80+
Benchmarking Ref::SoftReference...
81+
1.725505 0.007228 1.732733 ( 0.922712)
82+
Benchmarking Ref::WeakReference...
83+
0.167794 0.001500 0.169294 ( 0.088065)

0 commit comments

Comments
 (0)