2014-03-03 03:40:47 +0000
target 0: ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] at "ruby --disable=gems"
target 1: built-ruby (ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux]) at "./ruby -I../lib -I. -I.ext/common --disable-gems"
-----------------------------------------------------------
app_answer
def ack(m, n)
if m == 0 then
n + 1
elsif n == 0 then
ack(m - 1, 1)
else
ack(m - 1, ack(m, n - 1))
end
end
def the_answer_to_life_the_universe_and_everything
(ack(3,7).to_s.split(//).inject(0){|s,x| s+x.to_i}.to_s + "2" ).to_i
end
answer = the_answer_to_life_the_universe_and_everything
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.051486394
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.052154691
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.052910873
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.050513477
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.051407966
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.051532405
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.051715357
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.051668946
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.052064277
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.05200922
built-ruby 0.048955292
built-ruby 0.048731373
built-ruby 0.051552559
built-ruby 0.049620618
built-ruby 0.051386146
built-ruby 0.048901411
built-ruby 0.048816793
built-ruby 0.0490602
built-ruby 0.050657769
built-ruby 0.05127853
-----------------------------------------------------------
app_aobench
# AO rebder benchmark
# Original program (C) Syoyo Fujita in Javascript (and other languages)
# http://lucille.atso-net.jp/blog/?p=642
# http://lucille.atso-net.jp/blog/?p=711
# Ruby(yarv2llvm) version by Hideki Miura
#
IMAGE_WIDTH = 256
IMAGE_HEIGHT = 256
NSUBSAMPLES = 2
NAO_SAMPLES = 8
class Vec
def initialize(x, y, z)
@x = x
@y = y
@z = z
end
attr_accessor :x, :y, :z
def vadd(b)
Vec.new(@x + b.x, @y + b.y, @z + b.z)
end
def vsub(b)
Vec.new(@x - b.x, @y - b.y, @z - b.z)
end
def vcross(b)
Vec.new(@y * b.z - @z * b.y,
@z * b.x - @x * b.z,
@x * b.y - @y * b.x)
end
def vdot(b)
@x * b.x + @y * b.y + @z * b.z
end
def vlength
Math.sqrt(@x * @x + @y * @y + @z * @z)
end
def vnormalize
len = vlength
v = Vec.new(@x, @y, @z)
if len > 1.0e-17 then
v.x = v.x / len
v.y = v.y / len
v.z = v.z / len
end
v
end
end
class Sphere
def initialize(center, radius)
@center = center
@radius = radius
end
attr_reader :center, :radius
def intersect(ray, isect)
rs = ray.org.vsub(@center)
b = rs.vdot(ray.dir)
c = rs.vdot(rs) - (@radius * @radius)
d = b * b - c
if d > 0.0 then
t = - b - Math.sqrt(d)
if t > 0.0 and t < isect.t then
isect.t = t
isect.hit = true
isect.pl = Vec.new(ray.org.x + ray.dir.x * t,
ray.org.y + ray.dir.y * t,
ray.org.z + ray.dir.z * t)
n = isect.pl.vsub(@center)
isect.n = n.vnormalize
else
0.0
end
end
nil
end
end
class Plane
def initialize(p, n)
@p = p
@n = n
end
def intersect(ray, isect)
d = -@p.vdot(@n)
v = ray.dir.vdot(@n)
v0 = v
if v < 0.0 then
v0 = -v
end
if v0 < 1.0e-17 then
return
end
t = -(ray.org.vdot(@n) + d) / v
if t > 0.0 and t < isect.t then
isect.hit = true
isect.t = t
isect.n = @n
isect.pl = Vec.new(ray.org.x + t * ray.dir.x,
ray.org.y + t * ray.dir.y,
ray.org.z + t * ray.dir.z)
end
nil
end
end
class Ray
def initialize(org, dir)
@org = org
@dir = dir
end
attr_accessor :org, :dir
end
class Isect
def initialize
@t = 10000000.0
@hit = false
@pl = Vec.new(0.0, 0.0, 0.0)
@n = Vec.new(0.0, 0.0, 0.0)
end
attr_accessor :t, :hit, :pl, :n
end
def clamp(f)
i = f * 255.5
if i > 255.0 then
i = 255.0
end
if i < 0.0 then
i = 0.0
end
i.to_i
end
def otherBasis(basis, n)
basis[2] = Vec.new(n.x, n.y, n.z)
basis[1] = Vec.new(0.0, 0.0, 0.0)
if n.x < 0.6 and n.x > -0.6 then
basis[1].x = 1.0
elsif n.y < 0.6 and n.y > -0.6 then
basis[1].y = 1.0
elsif n.z < 0.6 and n.z > -0.6 then
basis[1].z = 1.0
else
basis[1].x = 1.0
end
basis[0] = basis[1].vcross(basis[2])
basis[0] = basis[0].vnormalize
basis[1] = basis[2].vcross(basis[0])
basis[1] = basis[1].vnormalize
end
class Scene
def initialize
@spheres = Array.new
@spheres[0] = Sphere.new(Vec.new(-2.0, 0.0, -3.5), 0.5)
@spheres[1] = Sphere.new(Vec.new(-0.5, 0.0, -3.0), 0.5)
@spheres[2] = Sphere.new(Vec.new(1.0, 0.0, -2.2), 0.5)
@plane = Plane.new(Vec.new(0.0, -0.5, 0.0), Vec.new(0.0, 1.0, 0.0))
end
def ambient_occlusion(isect)
basis = Array.new
otherBasis(basis, isect.n)
ntheta = NAO_SAMPLES
nphi = NAO_SAMPLES
eps = 0.0001
occlusion = 0.0
p0 = Vec.new(isect.pl.x + eps * isect.n.x,
isect.pl.y + eps * isect.n.y,
isect.pl.z + eps * isect.n.z)
nphi.times do |j|
ntheta.times do |i|
r = rand
phi = 2.0 * 3.14159265 * rand
x = Math.cos(phi) * Math.sqrt(1.0 - r)
y = Math.sin(phi) * Math.sqrt(1.0 - r)
z = Math.sqrt(r)
rx = x * basis[0].x + y * basis[1].x + z * basis[2].x
ry = x * basis[0].y + y * basis[1].y + z * basis[2].y
rz = x * basis[0].z + y * basis[1].z + z * basis[2].z
raydir = Vec.new(rx, ry, rz)
ray = Ray.new(p0, raydir)
occisect = Isect.new
@spheres[0].intersect(ray, occisect)
@spheres[1].intersect(ray, occisect)
@spheres[2].intersect(ray, occisect)
@plane.intersect(ray, occisect)
if occisect.hit then
occlusion = occlusion + 1.0
else
0.0
end
end
end
occlusion = (ntheta.to_f * nphi.to_f - occlusion) / (ntheta.to_f * nphi.to_f)
Vec.new(occlusion, occlusion, occlusion)
end
def render(w, h, nsubsamples)
cnt = 0
nsf = nsubsamples.to_f
h.times do |y|
w.times do |x|
rad = Vec.new(0.0, 0.0, 0.0)
# Subsmpling
nsubsamples.times do |v|
nsubsamples.times do |u|
cnt = cnt + 1
wf = w.to_f
hf = h.to_f
xf = x.to_f
yf = y.to_f
uf = u.to_f
vf = v.to_f
px = (xf + (uf / nsf) - (wf / 2.0)) / (wf / 2.0)
py = -(yf + (vf / nsf) - (hf / 2.0)) / (hf / 2.0)
eye = Vec.new(px, py, -1.0).vnormalize
ray = Ray.new(Vec.new(0.0, 0.0, 0.0), eye)
isect = Isect.new
@spheres[0].intersect(ray, isect)
@spheres[1].intersect(ray, isect)
@spheres[2].intersect(ray, isect)
@plane.intersect(ray, isect)
if isect.hit then
col = ambient_occlusion(isect)
rad.x = rad.x + col.x
rad.y = rad.y + col.y
rad.z = rad.z + col.z
end
end
end
r = rad.x / (nsf * nsf)
g = rad.y / (nsf * nsf)
b = rad.z / (nsf * nsf)
printf("%c", clamp(r))
printf("%c", clamp(g))
printf("%c", clamp(b))
end
nil
end
nil
end
end
alias printf_orig printf
def printf *args
end
# File.open("ao.ppm", "w") do |fp|
printf("P6\n")
printf("%d %d\n", IMAGE_WIDTH, IMAGE_HEIGHT)
printf("255\n", IMAGE_WIDTH, IMAGE_HEIGHT)
Scene.new.render(IMAGE_WIDTH, IMAGE_HEIGHT, NSUBSAMPLES)
# end
undef printf
alias printf printf_orig
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 76.28222306
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 75.040595342
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 75.763683556
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 75.617617887
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 74.82321601
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 75.372689202
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 74.564339732
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 74.472605462
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 74.519635934
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 74.7828191
built-ruby 73.659403622
built-ruby 74.814275047
built-ruby 74.458171429
built-ruby 73.593031479
built-ruby 75.032606542
built-ruby 75.066179051
built-ruby 73.94259832
built-ruby 75.403028399
built-ruby 73.139660676
built-ruby 74.286586065
-----------------------------------------------------------
app_erb
#
# Create many HTML strings with ERB.
#
require 'erb'
data = DATA.read
max = 15_000
title = "hello world!"
content = "hello world!\n" * 10
max.times{
ERB.new(data).result(binding)
}
__END__
<%= title %>
<%= title %>
<%= content %>
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.372013136
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.411414134
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.384225889
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.379861462
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.376959808
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.352220227
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.385264004
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.376638654
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.366504219
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.371758383
built-ruby 1.359012088
built-ruby 1.355175336
built-ruby 1.364910568
built-ruby 1.358210732
built-ruby 1.456285969
built-ruby 1.360442376
built-ruby 1.44478358
built-ruby 1.359399812
built-ruby 1.369572009
built-ruby 1.359783074
-----------------------------------------------------------
app_factorial
def fact(n)
if(n > 1)
n * fact(n-1)
else
1
end
end
100.times {
fact(5000)
}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.116452856
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.115754711
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.112362013
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.115912431
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.113059013
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.115771447
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.112645314
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.110940011
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.107984512
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.114691212
built-ruby 1.113215785
built-ruby 1.113816906
built-ruby 1.108319627
built-ruby 1.10901731
built-ruby 1.109241306
built-ruby 1.113172142
built-ruby 1.114934174
built-ruby 1.112793556
built-ruby 1.106314542
built-ruby 1.114847312
-----------------------------------------------------------
app_fib
def fib n
if n < 3
1
else
fib(n-1) + fib(n-2)
end
end
fib(34)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.652588155
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.658155948
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.652777087
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.652436066
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.65807399
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.650007131
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.672764714
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.657611733
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.658818875
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.657740144
built-ruby 0.662858657
built-ruby 0.659863337
built-ruby 0.666308997
built-ruby 0.659007758
built-ruby 0.661892827
built-ruby 0.663876125
built-ruby 0.662907332
built-ruby 0.651427646
built-ruby 0.663716112
built-ruby 0.655909416
-----------------------------------------------------------
app_mandelbrot
require 'complex'
def mandelbrot? z
i = 0
while i<100
i += 1
z = z * z
return false if z.abs > 2
end
true
end
ary = []
(0..1000).each{|dx|
(0..1000).each{|dy|
x = dx / 50.0
y = dy / 50.0
c = Complex(x, y)
ary << c if mandelbrot?(c)
}
}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.442799799
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.485098917
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.459704855
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.524947459
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.43736204
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.473151552
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.440638072
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.455886502
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.507587815
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.463714791
built-ruby 1.426758586
built-ruby 1.401519223
built-ruby 1.425131598
built-ruby 1.42883479
built-ruby 1.412584046
built-ruby 1.390131724
built-ruby 1.413132165
built-ruby 1.397389331
built-ruby 1.425281716
built-ruby 1.40002631
-----------------------------------------------------------
app_pentomino
#!/usr/local/bin/ruby
# This program is contributed by Shin Nishiyama
# modified by K.Sasada
NP = 5
ROW = 8 + NP
COL = 8
$p = []
$b = []
$no = 0
def piece(n, a, nb)
nb.each{|x|
a[n] = x
if n == NP-1
$p << [a.sort]
else
nbc=nb.dup
[-ROW, -1, 1, ROW].each{|d|
if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
nbc << x+d
end
}
nbc.delete x
piece(n+1,a[0..n],nbc)
end
}
end
def kikaku(a)
a.collect {|x| x - a[0]}
end
def ud(a)
kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
end
def rl(a)
kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
end
def xy(a)
kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
end
def mkpieces
piece(0,[],[0])
$p.each do |a|
a0 = a[0]
a[1] = ud(a0)
a[2] = rl(a0)
a[3] = ud(rl(a0))
a[4] = xy(a0)
a[5] = ud(xy(a0))
a[6] = rl(xy(a0))
a[7] = ud(rl(xy(a0)))
a.sort!
a.uniq!
end
$p.uniq!.sort! {|x,y| x[0] <=> y[0] }
end
def mkboard
(0...ROW*COL).each{|i|
if i % ROW >= ROW-NP
$b[i] = -2
else
$b[i] = -1
end
$b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
}
end
def pboard
return # skip print
print "No. #$no\n"
(0...COL).each{|i|
print "|"
(0...ROW-NP).each{|j|
x = $b[i*ROW+j]
if x < 0
print "..|"
else
printf "%2d|",x+1
end
}
print "\n"
}
print "\n"
end
$pnum=[]
def setpiece(a,pos)
if a.length == $p.length then
$no += 1
pboard
return
end
while $b[pos] != -1
pos += 1
end
($pnum - a).each do |i|
$p[i].each do |x|
f = 0
x.each{|s|
if $b[pos+s] != -1
f=1
break
end
}
if f == 0 then
x.each{|s|
$b[pos+s] = i
}
a << i
setpiece(a.dup, pos)
a.pop
x.each{|s|
$b[pos+s] = -1
}
end
end
end
end
mkpieces
mkboard
$p[4] = [$p[4][0]]
$pnum = (0...$p.length).to_a
setpiece([],0)
__END__
# original
NP = 5
ROW = 8 + NP
COL = 8
$p = []
$b = []
$no = 0
def piece(n,a,nb)
for x in nb
a[n] = x
if n == NP-1
$p << [a.sort]
else
nbc=nb.dup
for d in [-ROW, -1, 1, ROW]
if x+d > 0 and not a.include?(x+d) and not nbc.include?(x+d)
nbc << x+d
end
end
nbc.delete x
piece(n+1,a[0..n],nbc)
end
end
end
def kikaku(a)
a.collect {|x| x - a[0]}
end
def ud(a)
kikaku(a.collect {|x| ((x+NP)%ROW)-ROW*((x+NP)/ROW) }.sort)
end
def rl(a)
kikaku(a.collect {|x| ROW*((x+NP)/ROW)+ROW-((x+NP)%ROW)}.sort)
end
def xy(a)
kikaku(a.collect {|x| ROW*((x+NP)%ROW) + (x+NP)/ROW }.sort)
end
def mkpieces
piece(0,[],[0])
$p.each do |a|
a0 = a[0]
a[1] = ud(a0)
a[2] = rl(a0)
a[3] = ud(rl(a0))
a[4] = xy(a0)
a[5] = ud(xy(a0))
a[6] = rl(xy(a0))
a[7] = ud(rl(xy(a0)))
a.sort!
a.uniq!
end
$p.uniq!.sort! {|x,y| x[0] <=> y[0] }
end
def mkboard
for i in 0...ROW*COL
if i % ROW >= ROW-NP
$b[i] = -2
else
$b[i] = -1
end
$b[3*ROW+3]=$b[3*ROW+4]=$b[4*ROW+3]=$b[4*ROW+4]=-2
end
end
def pboard
print "No. #$no\n"
for i in 0...COL
print "|"
for j in 0...ROW-NP
x = $b[i*ROW+j]
if x < 0
print "..|"
else
printf "%2d|",x+1
end
end
print "\n"
end
print "\n"
end
$pnum=[]
def setpiece(a,pos)
if a.length == $p.length then
$no += 1
pboard
return
end
while $b[pos] != -1
pos += 1
end
($pnum - a).each do |i|
$p[i].each do |x|
f = 0
for s in x do
if $b[pos+s] != -1
f=1
break
end
end
if f == 0 then
for s in x do
$b[pos+s] = i
end
a << i
setpiece(a.dup, pos)
a.pop
for s in x do
$b[pos+s] = -1
end
end
end
end
end
mkpieces
mkboard
$p[4] = [$p[4][0]]
$pnum = (0...$p.length).to_a
setpiece([],0)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.244940487
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.162763094
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.056381253
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.882241323
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 20.956738029
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.290704655
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.077324515
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.165007028
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.655409168
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 21.070635887
built-ruby 20.074140245
built-ruby 19.521829645
built-ruby 19.695717446
built-ruby 19.589049446
built-ruby 20.143684402
built-ruby 20.016220892
built-ruby 19.965130791
built-ruby 19.85593923
built-ruby 20.22953989
built-ruby 19.64735851
-----------------------------------------------------------
app_raise
i = 0
while i<300000
i += 1
begin
raise
rescue
end
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.42593225
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.44425343
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.42653726
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.427839553
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.424736711
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.432297167
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.428573184
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.414352713
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.427098142
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.411857434
built-ruby 0.422154534
built-ruby 0.421707118
built-ruby 0.419566213
built-ruby 0.463346254
built-ruby 0.444736002
built-ruby 0.429276006
built-ruby 0.427038444
built-ruby 0.422311571
built-ruby 0.417886171
built-ruby 0.424726982
-----------------------------------------------------------
app_strconcat
i = 0
while i<2_000_000
"#{1+1} #{1+1} #{1+1}"
i += 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.182427291
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.191254338
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.190234108
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.192497868
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.191608181
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.189679877
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.191033956
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.247396668
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.205970791
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.190448861
built-ruby 1.200741397
built-ruby 1.209377487
built-ruby 1.27207305
built-ruby 1.207387391
built-ruby 1.21093106
built-ruby 1.204691243
built-ruby 1.20722958
built-ruby 1.208806687
built-ruby 1.197157917
built-ruby 1.20032084
-----------------------------------------------------------
app_tak
def tak x, y, z
unless y < x
z
else
tak( tak(x-1, y, z),
tak(y-1, z, x),
tak(z-1, x, y))
end
end
tak(18, 9, 0)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.880836052
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.957240829
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.885714573
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.887839269
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.895350548
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.931367612
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.888295097
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.915260165
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.883128256
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.87888814
built-ruby 0.883463695
built-ruby 0.893225405
built-ruby 0.887337039
built-ruby 0.956081455
built-ruby 0.907021025
built-ruby 0.901374593
built-ruby 0.879802131
built-ruby 0.892592433
built-ruby 0.896936562
built-ruby 0.887358648
-----------------------------------------------------------
app_tarai
def tarai( x, y, z )
if x <= y
then y
else tarai(tarai(x-1, y, z),
tarai(y-1, z, x),
tarai(z-1, x, y))
end
end
tarai(12, 6, 0)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.80473076
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.715020072
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.718913658
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.715580343
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.708577762
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.719989215
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.762486648
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.763604328
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.723824632
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.753863453
built-ruby 0.754390278
built-ruby 0.822774313
built-ruby 0.790622596
built-ruby 0.746963502
built-ruby 0.730139885
built-ruby 0.72812503
built-ruby 0.717489991
built-ruby 0.723603044
built-ruby 0.744843514
built-ruby 0.741498482
-----------------------------------------------------------
app_uri
require 'uri'
100_000.times{
uri = URI.parse('http://www.ruby-lang.org')
uri.scheme
uri.host
uri.port
}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.014899965
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.016150325
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.022751881
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.019311182
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.012396437
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.051855989
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.00854376
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.012750608
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.0141989
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.008688491
built-ruby 1.012004169
built-ruby 1.017069299
built-ruby 1.018969564
built-ruby 1.021713477
built-ruby 1.022185754
built-ruby 1.022132848
built-ruby 1.017878131
built-ruby 1.031052965
built-ruby 1.015147236
built-ruby 1.015461209
-----------------------------------------------------------
hash_aref_miss
h = {}
strs = ('a'..'z').to_a.map!(&:freeze)
strs.each { |s| h[s] = s }
strs = ('A'..'Z').to_a
1_000_000.times { strs.each { |s| h[s] } }
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.150363576
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.33140737
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.181972674
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.310237395
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.170677752
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.29863038
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.115307283
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.319271432
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.275353171
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.193486648
built-ruby 2.973051711
built-ruby 2.988772837
built-ruby 3.017699425
built-ruby 3.018192979
built-ruby 2.987706677
built-ruby 2.987029147
built-ruby 3.023075056
built-ruby 3.051296099
built-ruby 2.986789088
built-ruby 2.990590989
-----------------------------------------------------------
hash_aref_str
h = {}
strs = ('a'..'z').to_a.map!(&:freeze)
strs.each { |s| h[s] = s }
1_000_000.times { strs.each { |s| h[s] } }
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.045262301
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.992126372
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.980529668
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.93975854
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.95620463
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.93230148
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.982601048
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.084875448
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.983552737
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.047222506
built-ruby 2.615038049
built-ruby 2.560129607
built-ruby 2.718287301
built-ruby 2.606349378
built-ruby 2.631712318
built-ruby 2.581036767
built-ruby 2.682174514
built-ruby 2.549183861
built-ruby 2.523578659
built-ruby 2.537485299
-----------------------------------------------------------
hash_aref_sym
h = {}
syms = ('a'..'z').to_a.map(&:to_sym)
syms.each { |s| h[s] = s }
1_000_000.times { syms.each { |s| h[s] } }
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.665340328
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.628559959
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.706445581
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.684307504
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.674841138
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.691248481
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.585594779
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.621121111
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.652035494
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.640751773
built-ruby 2.647628169
built-ruby 2.65472363
built-ruby 2.659840211
built-ruby 2.651832658
built-ruby 2.643133916
built-ruby 2.584773399
built-ruby 2.653144987
built-ruby 2.629506272
built-ruby 2.660196515
built-ruby 2.66011489
-----------------------------------------------------------
hash_flatten
h = {}
10000.times do |i|
h[i] = nil
end
1000.times do
h.flatten
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.639700619
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.640170358
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.658329822
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.630564289
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.635752094
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.632135297
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.635555258
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.639566231
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.63674395
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.636456799
built-ruby 0.605568463
built-ruby 0.60716427
built-ruby 0.606772788
built-ruby 0.606324023
built-ruby 0.577543482
built-ruby 0.577639314
built-ruby 0.607270464
built-ruby 0.604719471
built-ruby 0.60398427
built-ruby 0.577916025
-----------------------------------------------------------
hash_ident_num
h = {}.compare_by_identity
nums = (1..26).to_a
nums.each { |n| h[n] = n }
1_000_000.times { nums.each { |n| h[n] } }
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.847680754
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.837997592
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.859797745
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.920554424
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.865287945
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.852068215
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.873666379
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.859513362
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.856839859
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.856641542
built-ruby 1.84309221
built-ruby 1.840090654
built-ruby 1.873486587
built-ruby 1.842017465
built-ruby 1.839703987
built-ruby 1.879980055
built-ruby 1.870565053
built-ruby 1.854980422
built-ruby 1.824815276
built-ruby 1.940134225
-----------------------------------------------------------
hash_ident_obj
h = {}.compare_by_identity
objs = 26.times.map { Object.new }
objs.each { |o| h[o] = o }
1_000_000.times { objs.each { |o| h[o] } }
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.154062596
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.095126739
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.07564334
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.102570095
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.102601896
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.136344514
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.090273918
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.094421588
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.103306373
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.087080387
built-ruby 1.906821656
built-ruby 1.89924294
built-ruby 1.95711611
built-ruby 1.92882307
built-ruby 2.011290126
built-ruby 1.924017026
built-ruby 1.898743791
built-ruby 1.890589718
built-ruby 2.054866632
built-ruby 1.904732663
-----------------------------------------------------------
hash_ident_str
h = {}.compare_by_identity
strs = ('a'..'z').to_a
strs.each { |s| h[s] = s }
1_000_000.times { strs.each { |s| h[s] } }
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.107988159
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.15040364
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.295381945
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.119524276
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.106361563
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.090949755
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.096513615
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.107144524
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.082204109
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.092154044
built-ruby 1.964071912
built-ruby 1.948067179
built-ruby 1.914383319
built-ruby 1.927857978
built-ruby 1.94902562
built-ruby 1.931556729
built-ruby 1.996915824
built-ruby 1.882040065
built-ruby 1.946316944
built-ruby 1.89626995
-----------------------------------------------------------
hash_ident_sym
h = {}.compare_by_identity
syms = ('a'..'z').to_a.map(&:to_sym)
syms.each { |s| h[s] = s }
1_000_000.times { syms.each { |s| h[s] } }
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.083774478
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.118436672
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.049236594
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.098811208
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.102398579
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.239272098
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.096419651
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.084577277
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.065336195
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.0546724
built-ruby 2.081298877
built-ruby 2.058637959
built-ruby 2.039411864
built-ruby 2.123824583
built-ruby 2.012701916
built-ruby 2.064282099
built-ruby 2.048054792
built-ruby 2.016999453
built-ruby 2.03270156
built-ruby 2.0260981
-----------------------------------------------------------
hash_keys
h = {}
10000.times do |i|
h[i] = nil
end
5000.times do
h.keys
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.231266103
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.231002583
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.22872609
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.234598014
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.231443566
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.234499339
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.231232591
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.234721436
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.229909199
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.234665547
built-ruby 0.233372541
built-ruby 0.228649895
built-ruby 0.233112857
built-ruby 0.230879097
built-ruby 0.231648092
built-ruby 0.231693973
built-ruby 0.230972906
built-ruby 0.231762175
built-ruby 0.231695712
built-ruby 0.231815343
-----------------------------------------------------------
hash_shift
h = {}
10000.times do |i|
h[i] = nil
end
50000.times do
k, v = h.shift
h[k] = v
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.029391414
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.028936869
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.028853989
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.028758795
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.029395228
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.028858243
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.029285958
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.029194202
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.028691581
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.028922427
built-ruby 0.029859858
built-ruby 0.029392944
built-ruby 0.028744555
built-ruby 0.029268786
built-ruby 0.028395836
built-ruby 0.029969133
built-ruby 0.028899144
built-ruby 0.028379038
built-ruby 0.029256514
built-ruby 0.028534738
-----------------------------------------------------------
hash_values
h = {}
10000.times do |i|
h[i] = nil
end
5000.times do
h.values
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.241557995
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.248352902
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.248504431
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.241919732
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.249879146
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.248904581
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.248914572
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.248590185
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.249300993
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.240433964
built-ruby 0.243215851
built-ruby 0.243060604
built-ruby 0.242811048
built-ruby 0.242923841
built-ruby 0.242935722
built-ruby 0.246275392
built-ruby 0.237895235
built-ruby 0.243635667
built-ruby 0.243095873
built-ruby 0.238016242
-----------------------------------------------------------
io_file_create
#
# Create files
#
max = 200_000
file = './tmpfile_of_bm_io_file_create'
max.times{
f = open(file, 'w')
f.close#(true)
}
File.unlink(file)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.15012037
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.186108216
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.247388473
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.058398269
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.173691503
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.074674317
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.10350798
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.20411352
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.065935638
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.211661471
built-ruby 2.055289624
built-ruby 2.055549282
built-ruby 2.049634133
built-ruby 2.081176137
built-ruby 2.204191833
built-ruby 2.051385434
built-ruby 2.043254808
built-ruby 2.087310599
built-ruby 2.087469906
built-ruby 2.159800316
-----------------------------------------------------------
io_file_read
#
# Seek and Read file.
#
require 'tempfile'
max = 200_000
str = "Hello world! " * 1000
f = Tempfile.new('yarv-benchmark')
f.write str
max.times{
f.seek 0
f.read
}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.351848851
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.303541674
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.292545754
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.311750934
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.304942087
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.277585558
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.311502099
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.314265876
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.306018131
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.313952268
built-ruby 2.303481832
built-ruby 2.29245913
built-ruby 2.286539727
built-ruby 2.302673523
built-ruby 2.294012632
built-ruby 2.275821465
built-ruby 2.309727483
built-ruby 2.28751792
built-ruby 2.290025249
built-ruby 2.280388301
-----------------------------------------------------------
io_file_write
#
# Seek and Write file.
#
require 'tempfile'
max = 200_000
str = "Hello world! " * 1000
f = Tempfile.new('yarv-benchmark')
max.times{
f.seek 0
f.write str
}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.364470635
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.443482596
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.352100461
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.540949179
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.344869804
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.360523359
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.345119447
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.52464286
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.349122239
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.363463726
built-ruby 1.495641829
built-ruby 1.343437435
built-ruby 1.365933449
built-ruby 1.353055246
built-ruby 1.345936209
built-ruby 1.36394151
built-ruby 1.344445322
built-ruby 1.33845488
built-ruby 1.341781047
built-ruby 1.342889126
-----------------------------------------------------------
io_select
# IO.select performance
w = [ IO.pipe[1] ];
nr = 1000000
nr.times {
IO.select nil, w
}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.196763169
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.17431358
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.208081258
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.200275973
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.173596785
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.187546907
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.222382754
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.198710168
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.313397326
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.186621375
built-ruby 2.130947011
built-ruby 2.132125695
built-ruby 2.127054464
built-ruby 2.116455148
built-ruby 2.193726701
built-ruby 2.115034472
built-ruby 2.099858974
built-ruby 2.201755343
built-ruby 2.095706548
built-ruby 2.239491684
-----------------------------------------------------------
io_select2
# IO.select performance. worst case of single fd.
ios = []
nr = 1000000
if defined?(Process::RLIMIT_NOFILE)
max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
else
max = 64
end
puts "max fd: #{max} (results not apparent with <= 1024 max fd)"
((max / 2) - 10).times do
ios.concat IO.pipe
end
last = [ ios[-1] ]
puts "last IO: #{last[0].inspect}"
nr.times do
IO.select nil, last
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.459198846
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.441079703
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.517267051
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.47825378
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.451049842
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.475805872
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.435878459
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.421592374
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.557431176
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.462164903
built-ruby 2.449448279
built-ruby 2.468360948
built-ruby 2.474833699
built-ruby 2.428662176
built-ruby 2.560115957
built-ruby 2.448703236
built-ruby 2.494189055
built-ruby 2.45821359
built-ruby 2.502973425
built-ruby 2.456074628
-----------------------------------------------------------
io_select3
# IO.select performance. a lot of fd
ios = []
nr = 100
if defined?(Process::RLIMIT_NOFILE)
max = Process.getrlimit(Process::RLIMIT_NOFILE)[0]
else
max = 64
end
puts "max fd: #{max} (results not apparent with <= 1024 max fd)"
(max - 10).times do
r, w = IO.pipe
r.close
ios.push w
end
nr.times do
IO.select nil, ios
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027749818
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027510803
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027440956
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027347205
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027651104
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027484203
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.02762075
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027533598
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027471681
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.027379468
built-ruby 0.027777754
built-ruby 0.027304163
built-ruby 0.02779094
built-ruby 0.027302049
built-ruby 0.027558127
built-ruby 0.027759264
built-ruby 0.027532716
built-ruby 0.027750293
built-ruby 0.027480764
built-ruby 0.027726797
-----------------------------------------------------------
loop_for
for i in 1..30_000_000
#
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.515631549
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.523817869
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.517866532
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.518641476
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.512841744
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.528650796
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.574996032
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.515019959
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.518998364
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.542640504
built-ruby 1.521514254
built-ruby 1.539894674
built-ruby 1.543350711
built-ruby 1.55219324
built-ruby 1.533350278
built-ruby 1.528339869
built-ruby 1.549616749
built-ruby 1.687514505
built-ruby 1.553551878
built-ruby 1.571256542
-----------------------------------------------------------
loop_generator
max = 600000
if defined? Fiber
gen = (1..max).each
loop do
gen.next
end
else
require 'generator'
gen = Generator.new((0..max))
while gen.next?
gen.next
end
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.032127721
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.020787415
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.040499465
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.039454647
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.035345216
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.041145626
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.027060772
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.050034533
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.027019081
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.026515786
built-ruby 1.078537909
built-ruby 1.059813071
built-ruby 1.059303262
built-ruby 1.05484698
built-ruby 1.064998811
built-ruby 1.056364195
built-ruby 1.058853477
built-ruby 1.050433032
built-ruby 1.053509092
built-ruby 1.064850185
-----------------------------------------------------------
loop_times
30_000_000.times{|e|}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.386630337
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.393951221
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.410187124
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.389138901
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.404695368
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.390174035
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.479144974
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.395252295
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.395175994
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.405689729
built-ruby 1.440144838
built-ruby 1.431150301
built-ruby 1.450707991
built-ruby 1.398915774
built-ruby 1.422066295
built-ruby 1.415842197
built-ruby 1.404714981
built-ruby 1.457967323
built-ruby 1.404065396
built-ruby 1.422563134
-----------------------------------------------------------
loop_whileloop
i = 0
while i<30_000_000 # benchmark loop 1
i += 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.647253676
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.648058265
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.650437809
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.647776839
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.649149892
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.649282602
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.650336971
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.647311412
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.647791315
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.647855745
built-ruby 0.653449574
built-ruby 0.649228531
built-ruby 0.648935655
built-ruby 0.653189887
built-ruby 0.650698526
built-ruby 0.650672511
built-ruby 0.647098579
built-ruby 0.647618455
built-ruby 0.652011533
built-ruby 0.646575889
-----------------------------------------------------------
loop_whileloop2
i = 0
while i< 6_000_000 # benchmark loop 2
i += 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134345343
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134213697
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134592692
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134671621
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.13443171
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134448608
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134848734
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134591705
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134472821
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134661133
built-ruby 0.13509294
built-ruby 0.134825974
built-ruby 0.13404156
built-ruby 0.134857579
built-ruby 0.138740788
built-ruby 0.13860662
built-ruby 0.134091343
built-ruby 0.134343528
built-ruby 0.134475019
built-ruby 0.135132762
-----------------------------------------------------------
so_ackermann
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: ackermann-ruby.code,v 1.4 2004/11/13 07:40:41 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
def ack(m, n)
if m == 0 then
n + 1
elsif n == 0 then
ack(m - 1, 1)
else
ack(m - 1, ack(m, n - 1))
end
end
NUM = 9
ack(3, NUM)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.749461374
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.732883556
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.734988329
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.792355423
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.698901125
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.704610818
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.726784138
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.751844665
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.706085359
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.734658312
built-ruby 0.700951538
built-ruby 0.714290532
built-ruby 0.749752239
built-ruby 0.699094438
built-ruby 0.697390919
built-ruby 0.695934687
built-ruby 0.721746702
built-ruby 0.695986501
built-ruby 0.730318347
built-ruby 0.713785099
-----------------------------------------------------------
so_array
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: ary-ruby.code,v 1.4 2004/11/13 07:41:27 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
# with help from Paul Brannan and Mark Hubbart
n = 9000 # Integer(ARGV.shift || 1)
x = Array.new(n)
y = Array.new(n, 0)
n.times{|bi|
x[bi] = bi + 1
}
(0 .. 999).each do |e|
(n-1).step(0,-1) do |bi|
y[bi] += x.at(bi)
end
end
# puts "#{y.first} #{y.last}"
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.075811273
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.088774958
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.10795022
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.119834581
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.110330019
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.116034926
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.078173922
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.085679421
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.168122688
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.076971454
built-ruby 1.12127799
built-ruby 1.115417568
built-ruby 1.10512937
built-ruby 1.126692649
built-ruby 1.088702553
built-ruby 1.092099007
built-ruby 1.103389004
built-ruby 1.103133306
built-ruby 1.077123631
built-ruby 1.098956854
-----------------------------------------------------------
so_binary_trees
# The Computer Language Shootout Benchmarks
# http://shootout.alioth.debian.org
#
# contributed by Jesse Millikan
# disable output
alias puts_orig puts
def puts str
# disable puts
end
def item_check(tree)
if tree[0] == nil
tree[1]
else
tree[1] + item_check(tree[0]) - item_check(tree[2])
end
end
def bottom_up_tree(item, depth)
if depth > 0
item_item = 2 * item
depth -= 1
[bottom_up_tree(item_item - 1, depth), item, bottom_up_tree(item_item, depth)]
else
[nil, item, nil]
end
end
max_depth = 16 # ARGV[0].to_i
min_depth = 4
max_depth = min_depth + 2 if min_depth + 2 > max_depth
stretch_depth = max_depth + 1
stretch_tree = bottom_up_tree(0, stretch_depth)
puts "stretch tree of depth #{stretch_depth}\t check: #{item_check(stretch_tree)}"
stretch_tree = nil
long_lived_tree = bottom_up_tree(0, max_depth)
min_depth.step(max_depth + 1, 2) do |depth|
iterations = 2**(max_depth - depth + min_depth)
check = 0
for i in 1..iterations
temp_tree = bottom_up_tree(i, depth)
check += item_check(temp_tree)
temp_tree = bottom_up_tree(-i, depth)
check += item_check(temp_tree)
end
puts "#{iterations * 2}\t trees of depth #{depth}\t check: #{check}"
end
puts "long lived tree of depth #{max_depth}\t check: #{item_check(long_lived_tree)}"
undef puts
alias puts puts_orig
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.392108037
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.575293864
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.604042401
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.511401272
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.470690877
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.437955053
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.530130087
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.503221174
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.590118023
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 7.502304706
built-ruby 7.474984783
built-ruby 7.520627819
built-ruby 7.392327507
built-ruby 7.324416008
built-ruby 7.34655363
built-ruby 7.443168888
built-ruby 7.390154004
built-ruby 7.42092577
built-ruby 7.563449249
built-ruby 7.55718874
-----------------------------------------------------------
so_concatenate
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: strcat-ruby.code,v 1.4 2004/11/13 07:43:28 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
# based on code from Aristarkh A Zagorodnikov and Dat Nguyen
STUFF = "hello\n"
i = 0
while i<10
i += 1
hello = ''
4_000_000.times do |e|
hello << STUFF
end
end
# puts hello.length
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.366533889
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.36988002
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.394861024
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.363805446
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.385738655
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.3456173
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.318642713
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.366079569
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.374423392
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 4.355432794
built-ruby 4.865675584
built-ruby 4.870037989
built-ruby 4.630086701
built-ruby 4.845620431
built-ruby 4.662494813
built-ruby 4.721467372
built-ruby 4.686119271
built-ruby 4.686535726
built-ruby 4.826365569
built-ruby 4.740444021
-----------------------------------------------------------
so_count_words
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: wc-ruby.code,v 1.4 2004/11/13 07:43:32 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
# with help from Paul Brannan
input = open(File.join(File.dirname($0), 'wc.input'), 'rb')
nl = nw = nc = 0
while true
tmp = input.read(4096) or break
data = tmp << (input.gets || "")
nc += data.length
nl += data.count("\n")
((data.strip! || data).tr!("\n", " ") || data).squeeze!
nw += data.count(" ") + 1
end
# STDERR.puts "#{nl} #{nw} #{nc}"
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.266176543
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.266176114
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.266464768
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.265603339
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.267259677
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.268029258
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.26559211
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.26737735
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.267121318
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.26801092
built-ruby 0.259587182
built-ruby 0.257938883
built-ruby 0.258828469
built-ruby 0.257959902
built-ruby 0.25930439
built-ruby 0.259184446
built-ruby 0.258405714
built-ruby 0.258624781
built-ruby 0.258514058
built-ruby 0.258994305
-----------------------------------------------------------
so_exception
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: except-ruby.code,v 1.4 2004/11/13 07:41:33 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
$HI = 0
$LO = 0
NUM = 250000 # Integer(ARGV[0] || 1)
class Lo_Exception < Exception
def initialize(num)
@value = num
end
end
class Hi_Exception < Exception
def initialize(num)
@value = num
end
end
def some_function(num)
begin
hi_function(num)
rescue
print "We shouldn't get here, exception is: #{$!.type}\n"
end
end
def hi_function(num)
begin
lo_function(num)
rescue Hi_Exception
$HI = $HI + 1
end
end
def lo_function(num)
begin
blowup(num)
rescue Lo_Exception
$LO = $LO + 1
end
end
def blowup(num)
if num % 2 == 0
raise Lo_Exception.new(num)
else
raise Hi_Exception.new(num)
end
end
i = 1
max = NUM+1
while i < max
i += 1
some_function(i+1)
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.47473351
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.48780931
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.475902947
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.482409332
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.475400111
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.48573775
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.467103972
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.497078565
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.489231981
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.478557581
built-ruby 0.456176807
built-ruby 0.502787889
built-ruby 0.545216509
built-ruby 0.505981384
built-ruby 0.467629505
built-ruby 0.466062921
built-ruby 0.467714121
built-ruby 0.463960227
built-ruby 0.479593309
built-ruby 0.475851362
-----------------------------------------------------------
so_fannkuch
# The Computer Language Shootout
# http://shootout.alioth.debian.org/
# Contributed by Sokolov Yura
# Modified by Ryan Williams
def fannkuch(n)
maxFlips, m, r, check = 0, n-1, n, 0
count = (1..n).to_a
perm = (1..n).to_a
while true
if check < 30
puts "#{perm}"
check += 1
end
while r != 1
count[r-1] = r
r -= 1
end
if perm[0] != 1 and perm[m] != n
perml = perm.clone #.dup
flips = 0
while (k = perml.first ) != 1
perml = perml.slice!(0, k).reverse + perml
flips += 1
end
maxFlips = flips if flips > maxFlips
end
while true
if r==n then return maxFlips end
perm.insert r,perm.shift
break if (count[r] -= 1) > 0
r += 1
end
end
end
def puts *args
end
N = 9 # (ARGV[0] || 1).to_i
puts "Pfannkuchen(#{N}) = #{fannkuch(N)}"
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.634322316
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.650334509
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.655529282
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.641135793
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.641274744
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.64316373
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.649453082
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.635810107
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.647577591
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.644083267
built-ruby 1.668030249
built-ruby 1.642846247
built-ruby 1.669170086
built-ruby 1.653810617
built-ruby 1.654801625
built-ruby 1.643132302
built-ruby 1.669403862
built-ruby 1.651756402
built-ruby 1.664227861
built-ruby 1.642326611
-----------------------------------------------------------
so_fasta
# The Computer Language Shootout
# http://shootout.alioth.debian.org/
# Contributed by Sokolov Yura
$last = 42.0
def gen_random (max,im=139968,ia=3877,ic=29573)
(max * ($last = ($last * ia + ic) % im)) / im
end
alu =
"GGCCGGGCGCGGTGGCTCACGCCTGTAATCCCAGCACTTTGG"+
"GAGGCCGAGGCGGGCGGATCACCTGAGGTCAGGAGTTCGAGA"+
"CCAGCCTGGCCAACATGGTGAAACCCCGTCTCTACTAAAAAT"+
"ACAAAAATTAGCCGGGCGTGGTGGCGCGCGCCTGTAATCCCA"+
"GCTACTCGGGAGGCTGAGGCAGGAGAATCGCTTGAACCCGGG"+
"AGGCGGAGGTTGCAGTGAGCCGAGATCGCGCCACTGCACTCC"+
"AGCCTGGGCGACAGAGCGAGACTCCGTCTCAAAAA"
iub = [
["a", 0.27],
["c", 0.12],
["g", 0.12],
["t", 0.27],
["B", 0.02],
["D", 0.02],
["H", 0.02],
["K", 0.02],
["M", 0.02],
["N", 0.02],
["R", 0.02],
["S", 0.02],
["V", 0.02],
["W", 0.02],
["Y", 0.02],
]
homosapiens = [
["a", 0.3029549426680],
["c", 0.1979883004921],
["g", 0.1975473066391],
["t", 0.3015094502008],
]
def make_repeat_fasta(id, desc, src, n)
puts ">#{id} #{desc}"
v = nil
width = 60
l = src.length
s = src * ((n / l) + 1)
s.slice!(n, l)
puts(s.scan(/.{1,#{width}}/).join("\n"))
end
def make_random_fasta(id, desc, table, n)
puts ">#{id} #{desc}"
rand, v = nil,nil
width = 60
chunk = 1 * width
prob = 0.0
table.each{|v| v[1]= (prob += v[1])}
for i in 1..(n/width)
puts((1..width).collect{
rand = gen_random(1.0)
table.find{|v| v[1]>rand}[0]
}.join)
end
if n%width != 0
puts((1..(n%width)).collect{
rand = gen_random(1.0)
table.find{|v| v[1]>rand}[0]
}.join)
end
end
n = (ARGV[0] or 250_000).to_i
make_repeat_fasta('ONE', 'Homo sapiens alu', alu, n*2)
make_random_fasta('TWO', 'IUB ambiguity codes', iub, n*3)
make_random_fasta('THREE', 'Homo sapiens frequency', homosapiens, n*5)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.188789812
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.186437712
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.224556415
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.21395413
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.196873763
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.206665601
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.294070149
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.183409065
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.194839747
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.215924259
built-ruby 2.162920153
built-ruby 2.145628495
built-ruby 2.099893874
built-ruby 2.130656906
built-ruby 2.126734623
built-ruby 2.134631918
built-ruby 2.190525573
built-ruby 2.176440086
built-ruby 2.140874902
built-ruby 2.131539105
-----------------------------------------------------------
so_k_nucleotide
# The Computer Language Shootout
# http://shootout.alioth.debian.org
#
# contributed by jose fco. gonzalez
# modified by Sokolov Yura
seq = String.new
def frecuency( seq,length )
n, table = seq.length - length + 1, Hash.new(0)
f, i = nil, nil
(0 ... length).each do |f|
(f ... n).step(length) do |i|
table[seq[i,length]] += 1
end
end
[n,table]
end
def sort_by_freq( seq,length )
n,table = frecuency( seq,length )
a, b, v = nil, nil, nil
table.sort{|a,b| b[1] <=> a[1]}.each do |v|
puts "%s %.3f" % [v[0].upcase,((v[1]*100).to_f/n)]
end
puts
end
def find_seq( seq,s )
n,table = frecuency( seq,s.length )
puts "#{table[s].to_s}\t#{s.upcase}"
end
input = open(File.join(File.dirname($0), 'fasta.output.100000'), 'rb')
line = input.gets while line !~ /^>THREE/
line = input.gets
while (line !~ /^>/) & line do
seq << line.chomp
line = input.gets
end
[1,2].each {|i| sort_by_freq( seq,i ) }
%w(ggt ggta ggtatt ggtattttaatt ggtattttaatttatagt).each{|s| find_seq( seq,s) }
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.283470433
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.285311075
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.319623586
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.295926827
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.292305892
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.287944697
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.29416462
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.291910095
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.302574504
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.291438696
built-ruby 1.277180933
built-ruby 1.225989591
built-ruby 1.23047893
built-ruby 1.233390369
built-ruby 1.244867982
built-ruby 1.269283861
built-ruby 1.241743658
built-ruby 1.239233166
built-ruby 1.220301089
built-ruby 1.236458527
-----------------------------------------------------------
so_lists
#from http://www.bagley.org/~doug/shootout/bench/lists/lists.ruby
NUM = 300
SIZE = 10000
def test_lists()
# create a list of integers (Li1) from 1 to SIZE
li1 = (1..SIZE).to_a
# copy the list to li2 (not by individual items)
li2 = li1.dup
# remove each individual item from left side of li2 and
# append to right side of li3 (preserving order)
li3 = Array.new
while (not li2.empty?)
li3.push(li2.shift)
end
# li2 must now be empty
# remove each individual item from right side of li3 and
# append to right side of li2 (reversing list)
while (not li3.empty?)
li2.push(li3.pop)
end
# li3 must now be empty
# reverse li1 in place
li1.reverse!
# check that first item is now SIZE
if li1[0] != SIZE then
p "not SIZE"
0
else
# compare li1 and li2 for equality
if li1 != li2 then
return(0)
else
# return the length of the list
li1.length
end
end
end
i = 0
while i LIMIT_SQUARED
escape = true
break
end
end
byte_acc = (byte_acc << 1) | (escape ? 0b0 : 0b1)
bit_num += 1
# Code is very similar for these cases, but using separate blocks
# ensures we skip the shifting when it's unnecessary, which is most cases.
if (bit_num == 8)
print byte_acc.chr
byte_acc = 0
bit_num = 0
elsif (x == count_size)
byte_acc <<= (8 - bit_num)
print byte_acc.chr
byte_acc = 0
bit_num = 0
end
end
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.055747541
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.043300487
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.120542722
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.030764261
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.097973728
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.07746904
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.049483736
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.049083223
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.043629787
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.025807105
built-ruby 3.131106074
built-ruby 3.259330743
built-ruby 3.160832861
built-ruby 3.103438163
built-ruby 3.216773438
built-ruby 3.099932571
built-ruby 3.102090082
built-ruby 3.233267405
built-ruby 3.22288164
built-ruby 3.16732368
-----------------------------------------------------------
so_matrix
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: matrix-ruby.code,v 1.4 2004/11/13 07:42:14 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
n = 60 #Integer(ARGV.shift || 1)
size = 40
def mkmatrix(rows, cols)
count = 1
mx = Array.new(rows)
(0 .. (rows - 1)).each do |bi|
row = Array.new(cols, 0)
(0 .. (cols - 1)).each do |j|
row[j] = count
count += 1
end
mx[bi] = row
end
mx
end
def mmult(rows, cols, m1, m2)
m3 = Array.new(rows)
(0 .. (rows - 1)).each do |bi|
row = Array.new(cols, 0)
(0 .. (cols - 1)).each do |j|
val = 0
(0 .. (cols - 1)).each do |k|
val += m1.at(bi).at(k) * m2.at(k).at(j)
end
row[j] = val
end
m3[bi] = row
end
m3
end
m1 = mkmatrix(size, size)
m2 = mkmatrix(size, size)
mm = Array.new
n.times do
mm = mmult(size, size, m1, m2)
end
# puts "#{mm[0][0]} #{mm[2][3]} #{mm[3][2]} #{mm[4][4]}"
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.77334466
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.786215072
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.763708114
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.775329871
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.782067475
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.791908709
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.781533373
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.772673019
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.803298301
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.787320985
built-ruby 0.775284979
built-ruby 0.776144324
built-ruby 0.784316989
built-ruby 0.755023733
built-ruby 0.772776808
built-ruby 0.782149253
built-ruby 0.774202765
built-ruby 0.76049647
built-ruby 0.804662538
built-ruby 0.784501129
-----------------------------------------------------------
so_meteor_contest
#!/usr/bin/env ruby
#
# The Computer Language Shootout
# http://shootout.alioth.debian.org
# contributed by Kevin Barnes (Ruby novice)
# PROGRAM: the main body is at the bottom.
# 1) read about the problem here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
# 2) see how I represent a board as a bitmask by reading the blank_board comments
# 3) read as your mental paths take you
def print *args
end
# class to represent all information about a particular rotation of a particular piece
class Rotation
# an array (by location) containing a bit mask for how the piece maps at the given location.
# if the rotation is invalid at that location the mask will contain false
attr_reader :start_masks
# maps a direction to a relative location. these differ depending on whether it is an even or
# odd row being mapped from
@@rotation_even_adder = { :west => -1, :east => 1, :nw => -7, :ne => -6, :sw => 5, :se => 6 }
@@rotation_odd_adder = { :west => -1, :east => 1, :nw => -6, :ne => -5, :sw => 6, :se => 7 }
def initialize( directions )
@even_offsets, @odd_offsets = normalize_offsets( get_values( directions ))
@even_mask = mask_for_offsets( @even_offsets)
@odd_mask = mask_for_offsets( @odd_offsets)
@start_masks = Array.new(60)
# create the rotational masks by placing the base mask at the location and seeing if
# 1) it overlaps the boundaries and 2) it produces a prunable board. if either of these
# is true the piece cannot be placed
0.upto(59) do | offset |
mask = is_even(offset) ? (@even_mask << offset) : (@odd_mask << offset)
if (blank_board & mask == 0 && !prunable(blank_board | mask, 0, true)) then
imask = compute_required( mask, offset)
@start_masks[offset] = [ mask, imask, imask | mask ]
else
@start_masks[offset] = false
end
end
end
def compute_required( mask, offset )
board = blank_board
0.upto(offset) { | i | board |= 1 << i }
board |= mask
return 0 if (!prunable(board | mask, offset))
board = flood_fill(board,58)
count = 0
imask = 0
0.upto(59) do | i |
if (board[i] == 0) then
imask |= (1 << i)
count += 1
end
end
(count > 0 && count < 5) ? imask : 0
end
def flood_fill( board, location)
return board if (board[location] == 1)
board |= 1 << location
row, col = location.divmod(6)
board = flood_fill( board, location - 1) if (col > 0)
board = flood_fill( board, location + 1) if (col < 4)
if (row % 2 == 0) then
board = flood_fill( board, location - 7) if (col > 0 && row > 0)
board = flood_fill( board, location - 6) if (row > 0)
board = flood_fill( board, location + 6) if (row < 9)
board = flood_fill( board, location + 5) if (col > 0 && row < 9)
else
board = flood_fill( board, location - 5) if (col < 4 && row > 0)
board = flood_fill( board, location - 6) if (row > 0)
board = flood_fill( board, location + 6) if (row < 9)
board = flood_fill( board, location + 7) if (col < 4 && row < 9)
end
board
end
# given a location, produces a list of relative locations covered by the piece at this rotation
def offsets( location)
if is_even( location) then
@even_offsets.collect { | value | value + location }
else
@odd_offsets.collect { | value | value + location }
end
end
# returns a set of offsets relative to the top-left most piece of the rotation (by even or odd rows)
# this is hard to explain. imagine we have this partial board:
# 0 0 0 0 0 x [positions 0-5]
# 0 0 1 1 0 x [positions 6-11]
# 0 0 1 0 0 x [positions 12-17]
# 0 1 0 0 0 x [positions 18-23]
# 0 1 0 0 0 x [positions 24-29]
# 0 0 0 0 0 x [positions 30-35]
# ...
# The top-left of the piece is at position 8, the
# board would be passed as a set of positions (values array) containing [8,9,14,19,25] not necessarily in that
# sorted order. Since that array starts on an odd row, the offsets for an odd row are: [0,1,6,11,17] obtained
# by subtracting 8 from everything. Now imagine the piece shifted up and to the right so it's on an even row:
# 0 0 0 1 1 x [positions 0-5]
# 0 0 1 0 0 x [positions 6-11]
# 0 0 1 0 0 x [positions 12-17]
# 0 1 0 0 0 x [positions 18-23]
# 0 0 0 0 0 x [positions 24-29]
# 0 0 0 0 0 x [positions 30-35]
# ...
# Now the positions are [3,4,8,14,19] which after subtracting the lowest value (3) gives [0,1,5,11,16] thus, the
# offsets for this particular piece are (in even, odd order) [0,1,5,11,16],[0,1,6,11,17] which is what
# this function would return
def normalize_offsets( values)
min = values.min
even_min = is_even(min)
other_min = even_min ? min + 6 : min + 7
other_values = values.collect do | value |
if is_even(value) then
value + 6 - other_min
else
value + 7 - other_min
end
end
values.collect! { | value | value - min }
if even_min then
[values, other_values]
else
[other_values, values]
end
end
# produce a bitmask representation of an array of offset locations
def mask_for_offsets( offsets )
mask = 0
offsets.each { | value | mask = mask + ( 1 << value ) }
mask
end
# finds a "safe" position that a position as described by a list of directions can be placed
# without falling off any edge of the board. the values returned a location to place the first piece
# at so it will fit after making the described moves
def start_adjust( directions )
south = east = 0;
directions.each do | direction |
east += 1 if ( direction == :sw || direction == :nw || direction == :west )
south += 1 if ( direction == :nw || direction == :ne )
end
south * 6 + east
end
# given a set of directions places the piece (as defined by a set of directions) on the board at
# a location that will not take it off the edge
def get_values ( directions )
start = start_adjust(directions)
values = [ start ]
directions.each do | direction |
if (start % 12 >= 6) then
start += @@rotation_odd_adder[direction]
else
start += @@rotation_even_adder[direction]
end
values += [ start ]
end
# some moves take you back to an existing location, we'll strip duplicates
values.uniq
end
end
# describes a piece and caches information about its rotations to as to be efficient for iteration
# ATTRIBUTES:
# rotations -- all the rotations of the piece
# type -- a numeic "name" of the piece
# masks -- an array by location of all legal rotational masks (a n inner array) for that location
# placed -- the mask that this piece was last placed at (not a location, but the actual mask used)
class Piece
attr_reader :rotations, :type, :masks
attr_accessor :placed
# transform hashes that change one direction into another when you either flip or rotate a set of directions
@@flip_converter = { :west => :west, :east => :east, :nw => :sw, :ne => :se, :sw => :nw, :se => :ne }
@@rotate_converter = { :west => :nw, :east => :se, :nw => :ne, :ne => :east, :sw => :west, :se => :sw }
def initialize( directions, type )
@type = type
@rotations = Array.new();
@map = {}
generate_rotations( directions )
directions.collect! { | value | @@flip_converter[value] }
generate_rotations( directions )
# creates the masks AND a map that returns [location, rotation] for any given mask
# this is used when a board is found and we want to draw it, otherwise the map is unused
@masks = Array.new();
0.upto(59) do | i |
even = true
@masks[i] = @rotations.collect do | rotation |
mask = rotation.start_masks[i]
@map[mask[0]] = [ i, rotation ] if (mask)
mask || nil
end
@masks[i].compact!
end
end
# rotates a set of directions through all six angles and adds a Rotation to the list for each one
def generate_rotations( directions )
6.times do
rotations.push( Rotation.new(directions))
directions.collect! { | value | @@rotate_converter[value] }
end
end
# given a board string, adds this piece to the board at whatever location/rotation
# important: the outbound board string is 5 wide, the normal location notation is six wide (padded)
def fill_string( board_string)
location, rotation = @map[@placed]
rotation.offsets(location).each do | offset |
row, col = offset.divmod(6)
board_string[ row*5 + col, 1 ] = @type.to_s
end
end
end
# a blank bit board having this form:
#
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 0 0 0 0 0 1
# 1 1 1 1 1 1
#
# where left lest significant bit is the top left and the most significant is the lower right
# the actual board only consists of the 0 places, the 1 places are blockers to keep things from running
# off the edges or bottom
def blank_board
0b111111100000100000100000100000100000100000100000100000100000100000
end
def full_board
0b111111111111111111111111111111111111111111111111111111111111111111
end
# determines if a location (bit position) is in an even row
def is_even( location)
(location % 12) < 6
end
# support function that create three utility maps:
# $converter -- for each row an array that maps a five bit row (via array mapping)
# to the a a five bit representation of the bits below it
# $bit_count -- maps a five bit row (via array mapping) to the number of 1s in the row
# @@new_regions -- maps a five bit row (via array mapping) to an array of "region" arrays
# a region array has three values the first is a mask of bits in the region,
# the second is the count of those bits and the third is identical to the first
# examples:
# 0b10010 => [ 0b01100, 2, 0b01100 ], [ 0b00001, 1, 0b00001]
# 0b01010 => [ 0b10000, 1, 0b10000 ], [ 0b00100, 1, 0b00100 ], [ 0b00001, 1, 0b00001]
# 0b10001 => [ 0b01110, 3, 0b01110 ]
def create_collector_support
odd_map = [0b11, 0b110, 0b1100, 0b11000, 0b10000]
even_map = [0b1, 0b11, 0b110, 0b1100, 0b11000]
all_odds = Array.new(0b100000)
all_evens = Array.new(0b100000)
bit_counts = Array.new(0b100000)
new_regions = Array.new(0b100000)
0.upto(0b11111) do | i |
bit_count = odd = even = 0
0.upto(4) do | bit |
if (i[bit] == 1) then
bit_count += 1
odd |= odd_map[bit]
even |= even_map[bit]
end
end
all_odds[i] = odd
all_evens[i] = even
bit_counts[i] = bit_count
new_regions[i] = create_regions( i)
end
$converter = []
10.times { | row | $converter.push((row % 2 == 0) ? all_evens : all_odds) }
$bit_counts = bit_counts
$regions = new_regions.collect { | set | set.collect { | value | [ value, bit_counts[value], value] } }
end
# determines if a board is punable, meaning that there is no possibility that it
# can be filled up with pieces. A board is prunable if there is a grouping of unfilled spaces
# that are not a multiple of five. The following board is an example of a prunable board:
# 0 0 1 0 0
# 0 1 0 0 0
# 1 1 0 0 0
# 0 1 0 0 0
# 0 0 0 0 0
# ...
#
# This board is prunable because the top left corner is only 3 bits in area, no piece will ever fit it
# parameters:
# board -- an initial bit board (6 bit padded rows, see blank_board for format)
# location -- starting location, everything above and to the left is already full
# slotting -- set to true only when testing initial pieces, when filling normally
# additional assumptions are possible
#
# Algorithm:
# The algorithm starts at the top row (as determined by location) and iterates a row at a time
# maintainng counts of active open areas (kept in the collector array) each collector contains
# three values at the start of an iteration:
# 0: mask of bits that would be adjacent to the collector in this row
# 1: the number of bits collected so far
# 2: a scratch space starting as zero, but used during the computation to represent
# the empty bits in the new row that are adjacent (position 0)
# The exact procedure is described in-code
def prunable( board, location, slotting = false)
collectors = []
# loop across the rows
(location / 6).to_i.upto(9) do | row_on |
# obtain a set of regions representing the bits of the current row.
regions = $regions[(board >> (row_on * 6)) & 0b11111]
converter = $converter[row_on]
# track the number of collectors at the start of the cycle so that
# we don't compute against newly created collectors, only existing collectors
initial_collector_count = collectors.length
# loop against the regions. For each region of the row
# we will see if it connects to one or more existing collectors.
# if it connects to 1 collector, the bits from the region are added to the
# bits of the collector and the mask is placed in collector[2]
# If the region overlaps more than one collector then all the collectors
# it overlaps with are merged into the first one (the others are set to nil in the array)
# if NO collectors are found then the region is copied as a new collector
regions.each do | region |
collector_found = nil
region_mask = region[2]
initial_collector_count.times do | collector_num |
collector = collectors[collector_num]
if (collector) then
collector_mask = collector[0]
if (collector_mask & region_mask != 0) then
if (collector_found) then
collector_found[0] |= collector_mask
collector_found[1] += collector[1]
collector_found[2] |= collector[2]
collectors[collector_num] = nil
else
collector_found = collector
collector[1] += region[1]
collector[2] |= region_mask
end
end
end
end
if (collector_found == nil) then
collectors.push(Array.new(region))
end
end
# check the existing collectors, if any collector overlapped no bits in the region its [2] value will
# be zero. The size of any such reaason is tested if it is not a multiple of five true is returned since
# the board is prunable. if it is a multiple of five it is removed.
# Collector that are still active have a new adjacent value [0] set based n the matched bits
# and have [2] cleared out for the next cycle.
collectors.length.times do | collector_num |
collector = collectors[collector_num]
if (collector) then
if (collector[2] == 0) then
return true if (collector[1] % 5 != 0)
collectors[collector_num] = nil
else
# if a collector matches all bits in the row then we can return unprunable early for the
# following reasons:
# 1) there can be no more unavailable bits bince we fill from the top left downward
# 2) all previous regions have been closed or joined so only this region can fail
# 3) this region must be good since there can never be only 1 region that is nuot
# a multiple of five
# this rule only applies when filling normally, so we ignore the rule if we are "slotting"
# in pieces to see what configurations work for them (the only other time this algorithm is used).
return false if (collector[2] == 0b11111 && !slotting)
collector[0] = converter[collector[2]]
collector[2] = 0
end
end
end
# get rid of all the empty converters for the next round
collectors.compact!
end
return false if (collectors.length <= 1) # 1 collector or less and the region is fine
collectors.any? { | collector | (collector[1] % 5) != 0 } # more than 1 and we test them all for bad size
end
# creates a region given a row mask. see prunable for what a "region" is
def create_regions( value )
regions = []
cur_region = 0
5.times do | bit |
if (value[bit] == 0) then
cur_region |= 1 << bit
else
if (cur_region != 0 ) then
regions.push( cur_region)
cur_region = 0;
end
end
end
regions.push(cur_region) if (cur_region != 0)
regions
end
# find up to the counted number of solutions (or all solutions) and prints the final result
def find_all
find_top( 1)
find_top( 0)
print_results
end
# show the board
def print_results
print "#{@boards_found} solutions found\n\n"
print_full_board( @min_board)
print "\n"
print_full_board( @max_board)
print "\n"
end
# finds solutions. This special version of the main function is only used for the top level
# the reason for it is basically to force a particular ordering on how the rotations are tested for
# the first piece. It is called twice, first looking for placements of the odd rotations and then
# looking for placements of the even locations.
#
# WHY?
# Since any found solution has an inverse we want to maximize finding solutions that are not already found
# as an inverse. The inverse will ALWAYS be 3 one of the piece configurations that is exactly 3 rotations away
# (an odd number). Checking even vs odd then produces a higher probability of finding more pieces earlier
# in the cycle. We still need to keep checking all the permutations, but our probability of finding one will
# diminsh over time. Since we are TOLD how many to search for this lets us exit before checking all pieces
# this bennifit is very great when seeking small numbers of solutions and is 0 when looking for more than the
# maximum number
def find_top( rotation_skip)
board = blank_board
(@pieces.length-1).times do
piece = @pieces.shift
piece.masks[0].each do | mask, imask, cmask |
if ((rotation_skip += 1) % 2 == 0) then
piece.placed = mask
find( 1, 1, board | mask)
end
end
@pieces.push(piece)
end
piece = @pieces.shift
@pieces.push(piece)
end
# the normail find routine, iterates through the available pieces, checks all rotations at the current location
# and adds any boards found. depth is acheived via recursion. the overall approach is described
# here: http://www-128.ibm.com/developerworks/java/library/j-javaopt/
# parameters:
# start_location -- where to start looking for place for the next piece at
# placed -- number of pieces placed
# board -- current state of the board
#
# see in-code comments
def find( start_location, placed, board)
# find the next location to place a piece by looking for an empty bit
while board[start_location] == 1
start_location += 1
end
@pieces.length.times do
piece = @pieces.shift
piece.masks[start_location].each do | mask, imask, cmask |
if ( board & cmask == imask) then
piece.placed = mask
if (placed == 9) then
add_board
else
find( start_location + 1, placed + 1, board | mask)
end
end
end
@pieces.push(piece)
end
end
# print the board
def print_full_board( board_string)
10.times do | row |
print " " if (row % 2 == 1)
5.times do | col |
print "#{board_string[row*5 + col,1]} "
end
print "\n"
end
end
# when a board is found we "draw it" into a string and then flip that string, adding both to
# the list (hash) of solutions if they are unique.
def add_board
board_string = "99999999999999999999999999999999999999999999999999"
@all_pieces.each { | piece | piece.fill_string( board_string ) }
save( board_string)
save( board_string.reverse)
end
# adds a board string to the list (if new) and updates the current best/worst board
def save( board_string)
if (@all_boards[board_string] == nil) then
@min_board = board_string if (board_string < @min_board)
@max_board = board_string if (board_string > @max_board)
@all_boards.store(board_string,true)
@boards_found += 1
# the exit motif is a time saver. Ideally the function should return, but those tests
# take noticeable time (performance).
if (@boards_found == @stop_count) then
print_results
exit(0)
end
end
end
##
## MAIN BODY :)
##
create_collector_support
@pieces = [
Piece.new( [ :nw, :ne, :east, :east ], 2),
Piece.new( [ :ne, :se, :east, :ne ], 7),
Piece.new( [ :ne, :east, :ne, :nw ], 1),
Piece.new( [ :east, :sw, :sw, :se ], 6),
Piece.new( [ :east, :ne, :se, :ne ], 5),
Piece.new( [ :east, :east, :east, :se ], 0),
Piece.new( [ :ne, :nw, :se, :east, :se ], 4),
Piece.new( [ :se, :se, :se, :west ], 9),
Piece.new( [ :se, :se, :east, :se ], 8),
Piece.new( [ :east, :east, :sw, :se ], 3)
];
@all_pieces = Array.new( @pieces)
@min_board = "99999999999999999999999999999999999999999999999999"
@max_board = "00000000000000000000000000000000000000000000000000"
@stop_count = ARGV[0].to_i || 2089
@all_boards = {}
@boards_found = 0
find_all ######## DO IT!!!
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.539111218
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.52401584
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.596010371
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.54692886
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.7483598
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.50804004
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.500482281
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.549040326
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.488531007
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.669332974
built-ruby 3.574238043
built-ruby 3.79277001
built-ruby 3.617403589
built-ruby 3.57616608
built-ruby 3.608409673
built-ruby 3.584869406
built-ruby 3.795895512
built-ruby 3.616900879
built-ruby 3.598477039
built-ruby 3.791426742
-----------------------------------------------------------
so_nbody
# The Computer Language Shootout
# http://shootout.alioth.debian.org
#
# Optimized for Ruby by Jesse Millikan
# From version ported by Michael Neumann from the C gcc version,
# which was written by Christoph Bauer.
SOLAR_MASS = 4 * Math::PI**2
DAYS_PER_YEAR = 365.24
def _puts *args
end
class Planet
attr_accessor :x, :y, :z, :vx, :vy, :vz, :mass
def initialize(x, y, z, vx, vy, vz, mass)
@x, @y, @z = x, y, z
@vx, @vy, @vz = vx * DAYS_PER_YEAR, vy * DAYS_PER_YEAR, vz * DAYS_PER_YEAR
@mass = mass * SOLAR_MASS
end
def move_from_i(bodies, nbodies, dt, i)
while i < nbodies
b2 = bodies[i]
dx = @x - b2.x
dy = @y - b2.y
dz = @z - b2.z
distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
mag = dt / (distance * distance * distance)
b_mass_mag, b2_mass_mag = @mass * mag, b2.mass * mag
@vx -= dx * b2_mass_mag
@vy -= dy * b2_mass_mag
@vz -= dz * b2_mass_mag
b2.vx += dx * b_mass_mag
b2.vy += dy * b_mass_mag
b2.vz += dz * b_mass_mag
i += 1
end
@x += dt * @vx
@y += dt * @vy
@z += dt * @vz
end
end
def energy(bodies)
e = 0.0
nbodies = bodies.size
for i in 0 ... nbodies
b = bodies[i]
e += 0.5 * b.mass * (b.vx * b.vx + b.vy * b.vy + b.vz * b.vz)
for j in (i + 1) ... nbodies
b2 = bodies[j]
dx = b.x - b2.x
dy = b.y - b2.y
dz = b.z - b2.z
distance = Math.sqrt(dx * dx + dy * dy + dz * dz)
e -= (b.mass * b2.mass) / distance
end
end
e
end
def offset_momentum(bodies)
px, py, pz = 0.0, 0.0, 0.0
for b in bodies
m = b.mass
px += b.vx * m
py += b.vy * m
pz += b.vz * m
end
b = bodies[0]
b.vx = - px / SOLAR_MASS
b.vy = - py / SOLAR_MASS
b.vz = - pz / SOLAR_MASS
end
BODIES = [
# sun
Planet.new(0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0),
# jupiter
Planet.new(
4.84143144246472090e+00,
-1.16032004402742839e+00,
-1.03622044471123109e-01,
1.66007664274403694e-03,
7.69901118419740425e-03,
-6.90460016972063023e-05,
9.54791938424326609e-04),
# saturn
Planet.new(
8.34336671824457987e+00,
4.12479856412430479e+00,
-4.03523417114321381e-01,
-2.76742510726862411e-03,
4.99852801234917238e-03,
2.30417297573763929e-05,
2.85885980666130812e-04),
# uranus
Planet.new(
1.28943695621391310e+01,
-1.51111514016986312e+01,
-2.23307578892655734e-01,
2.96460137564761618e-03,
2.37847173959480950e-03,
-2.96589568540237556e-05,
4.36624404335156298e-05),
# neptune
Planet.new(
1.53796971148509165e+01,
-2.59193146099879641e+01,
1.79258772950371181e-01,
2.68067772490389322e-03,
1.62824170038242295e-03,
-9.51592254519715870e-05,
5.15138902046611451e-05)
]
init = 200_000 # ARGV[0]
n = Integer(init)
offset_momentum(BODIES)
puts "%.9f" % energy(BODIES)
nbodies = BODIES.size
dt = 0.01
n.times do
i = 0
while i < nbodies
b = BODIES[i]
b.move_from_i(BODIES, nbodies, dt, i + 1)
i += 1
end
end
puts "%.9f" % energy(BODIES)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.799341851
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.84187245
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.849474055
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.829923001
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.81606694
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.850065299
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.839618453
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.835618869
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.81173072
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.837271516
built-ruby 1.841680993
built-ruby 1.87570239
built-ruby 1.852583055
built-ruby 1.857353529
built-ruby 1.822175475
built-ruby 1.79752561
built-ruby 1.826490123
built-ruby 1.857684808
built-ruby 1.839381025
built-ruby 1.871195009
-----------------------------------------------------------
so_nested_loop
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: nestedloop-ruby.code,v 1.4 2004/11/13 07:42:22 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
# from Avi Bryant
n = 16 # Integer(ARGV.shift || 1)
x = 0
n.times do
n.times do
n.times do
n.times do
n.times do
n.times do
x += 1
end
end
end
end
end
end
# puts x
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.241936631
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.233325736
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.216927163
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.220863351
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.224486767
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.257400695
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.25409484
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.237586824
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.214261805
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.223434544
built-ruby 1.255694223
built-ruby 1.264977089
built-ruby 1.25294393
built-ruby 1.256114407
built-ruby 1.30348532
built-ruby 1.244115411
built-ruby 1.251923789
built-ruby 1.254956984
built-ruby 1.249349645
built-ruby 1.247176487
-----------------------------------------------------------
so_nsieve
# The Computer Language Shootout
# http://shootout.alioth.debian.org/
#
# contributed by Glenn Parker, March 2005
# modified by Evan Phoenix, Sept 2006
def sieve(m)
flags = Flags.dup[0,m]
count = 0
pmax = m - 1
p = 2
while p <= pmax
unless flags[p].zero?
count += 1
mult = p
while mult <= pmax
flags[mult] = 0
mult += p
end
end
p += 1
end
count
end
n = 9 # (ARGV[0] || 2).to_i
Flags = ("\x1" * ( 2 ** n * 10_000)).unpack("c*")
n.downto(n-2) do |exponent|
break if exponent < 0
m = (1 << exponent) * 10_000
# m = (2 ** exponent) * 10_000
count = sieve(m)
printf "Primes up to %8d %8d\n", m, count
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.294285008
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.281652935
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.243004021
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.266685903
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.251648936
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.236178955
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.327893933
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.337473304
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.379210389
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.436047954
built-ruby 2.254877976
built-ruby 2.248618125
built-ruby 2.233529855
built-ruby 2.331283273
built-ruby 2.242122568
built-ruby 2.39487297
built-ruby 2.236972278
built-ruby 2.257717109
built-ruby 2.244886138
built-ruby 2.32727913
-----------------------------------------------------------
so_nsieve_bits
#!/usr/bin/ruby
#coding: us-ascii
#
# The Great Computer Language Shootout
# http://shootout.alioth.debian.org/
#
# nsieve-bits in Ruby
# Contributed by Glenn Parker, March 2005
CharExponent = 3
BitsPerChar = 1 << CharExponent
LowMask = BitsPerChar - 1
def sieve(m)
items = "\xFF" * ((m / BitsPerChar) + 1)
masks = ""
BitsPerChar.times do |b|
masks << (1 << b).chr
end
count = 0
pmax = m - 1
2.step(pmax, 1) do |p|
if items[p >> CharExponent][p & LowMask] == 1
count += 1
p.step(pmax, p) do |mult|
a = mult >> CharExponent
b = mult & LowMask
items[a] -= masks[b] if items[a][b] != 0
end
end
end
count
end
n = 9 # (ARGV[0] || 2).to_i
n.step(n - 2, -1) do |exponent|
break if exponent < 0
m = 2 ** exponent * 10_000
count = sieve(m)
printf "Primes up to %8d %8d\n", m, count
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.315316338
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.407213915
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.416510858
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.424920419
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.422238782
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.421162976
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.385343074
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.350320783
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.447255839
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.321905561
built-ruby 2.472184182
built-ruby 2.640313748
built-ruby 2.458189642
built-ruby 2.451787338
built-ruby 2.539691078
built-ruby 2.418226028
built-ruby 2.446858402
built-ruby 2.523097249
built-ruby 2.365247171
built-ruby 2.389753791
-----------------------------------------------------------
so_object
#!/usr/bin/ruby
# -*- mode: ruby -*-
# $Id: objinst-ruby.code,v 1.4 2004/11/13 07:42:25 bfulgham Exp $
# http://www.bagley.org/~doug/shootout/
# with help from Aristarkh Zagorodnikov
class Toggle
def initialize(start_state)
@bool = start_state
end
def value
@bool
end
def activate
@bool = !@bool
self
end
end
class NthToggle < Toggle
def initialize(start_state, max_counter)
super start_state
@count_max = max_counter
@counter = 0
end
def activate
@counter += 1
if @counter >= @count_max
@bool = !@bool
@counter = 0
end
self
end
end
n = 1500000 # (ARGV.shift || 1).to_i
toggle = Toggle.new 1
5.times do
toggle.activate.value ? 'true' : 'false'
end
n.times do
toggle = Toggle.new 1
end
ntoggle = NthToggle.new 1, 3
8.times do
ntoggle.activate.value ? 'true' : 'false'
end
n.times do
ntoggle = NthToggle.new 1, 3
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.754261041
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.749572766
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.7168087
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.787807228
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.743405289
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.735140274
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.7639707
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.769323708
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.723677742
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.731285619
built-ruby 0.748005104
built-ruby 0.748830155
built-ruby 0.759103253
built-ruby 0.767117176
built-ruby 0.764509494
built-ruby 0.769353212
built-ruby 0.736920418
built-ruby 0.756762563
built-ruby 0.749479077
built-ruby 0.741593539
-----------------------------------------------------------
so_partial_sums
n = 2_500_000 # (ARGV.shift || 1).to_i
alt = 1.0 ; s0 = s1 = s2 = s3 = s4 = s5 = s6 = s7 = s8 = 0.0
1.upto(n) do |d|
d = d.to_f ; d2 = d * d ; d3 = d2 * d ; ds = Math.sin(d) ; dc = Math.cos(d)
s0 += (2.0 / 3.0) ** (d - 1.0)
s1 += 1.0 / Math.sqrt(d)
s2 += 1.0 / (d * (d + 1.0))
s3 += 1.0 / (d3 * ds * ds)
s4 += 1.0 / (d3 * dc * dc)
s5 += 1.0 / d
s6 += 1.0 / d2
s7 += alt / d
s8 += alt / (2.0 * d - 1.0)
alt = -alt
end
if false
printf("%.9f\t(2/3)^k\n", s0)
printf("%.9f\tk^-0.5\n", s1)
printf("%.9f\t1/k(k+1)\n", s2)
printf("%.9f\tFlint Hills\n", s3)
printf("%.9f\tCookson Hills\n", s4)
printf("%.9f\tHarmonic\n", s5)
printf("%.9f\tRiemann Zeta\n", s6)
printf("%.9f\tAlternating Harmonic\n", s7)
printf("%.9f\tGregory\n", s8)
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.939763724
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.89934002
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.866649522
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.913549557
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.888284487
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.885594804
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.068903043
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.906423573
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.868201551
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.875169538
built-ruby 2.838501351
built-ruby 2.88155547
built-ruby 2.908225932
built-ruby 2.832095947
built-ruby 2.790760115
built-ruby 2.86470467
built-ruby 2.781539189
built-ruby 2.795186517
built-ruby 2.883306735
built-ruby 2.808574187
-----------------------------------------------------------
so_pidigits
# The Great Computer Language Shootout
# http://shootout.alioth.debian.org/
#
# contributed by Gabriele Renzi
class PiDigitSpigot
def initialize()
@z = Transformation.new 1,0,0,1
@x = Transformation.new 0,0,0,0
@inverse = Transformation.new 0,0,0,0
end
def next!
@y = @z.extract(3)
if safe? @y
@z = produce(@y)
@y
else
@z = consume @x.next!()
next!()
end
end
def safe?(digit)
digit == @z.extract(4)
end
def produce(i)
@inverse.qrst(10,-10*i,0,1).compose(@z)
end
def consume(a)
@z.compose(a)
end
end
class Transformation
attr_reader :q, :r, :s, :t
def initialize (q, r, s, t)
@q,@r,@s,@t,@k = q,r,s,t,0
end
def next!()
@q = @k = @k + 1
@r = 4 * @k + 2
@s = 0
@t = 2 * @k + 1
self
end
def extract(j)
(@q * j + @r) / (@s * j + @t)
end
def compose(a)
self.class.new( @q * a.q,
@q * a.r + r * a.t,
@s * a.q + t * a.s,
@s * a.r + t * a.t
)
end
def qrst *args
initialize *args
self
end
end
WIDTH = 10
n = 2_500 # Integer(ARGV[0])
j = 0
digits = PiDigitSpigot.new
while n > 0
if n >= WIDTH
WIDTH.times {print digits.next!}
j += WIDTH
else
n.times {print digits.next!}
(WIDTH-n).times {print " "}
j += n
end
puts "\t:"+j.to_s
n -= WIDTH
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.63821205
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.64044663
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.640465308
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.64132744
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.638929905
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.643527592
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.638628529
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.63954726
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.638801458
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.639428985
built-ruby 0.636953266
built-ruby 0.638127095
built-ruby 0.636291221
built-ruby 0.636611608
built-ruby 0.636589001
built-ruby 0.640398086
built-ruby 0.63819013
built-ruby 0.638555277
built-ruby 0.637816214
built-ruby 0.64065374
-----------------------------------------------------------
so_random
# from http://www.bagley.org/~doug/shootout/bench/random/random.ruby
IM = 139968.0
IA = 3877.0
IC = 29573.0
$last = 42.0
def gen_random(max)
(max * ($last = ($last * IA + IC) % IM)) / IM
end
N = 3_000_000
i = 0
while i/
if seq.length != 0
revcomp(seq.join)
seq=Array.new
end
puts $_
else
$_.sub(/\n/,'')
seq.push $_
end
end
revcomp(seq.join)
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.539057344
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.538307832
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.548669829
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.534341308
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.5387205
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.531383652
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.528836218
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.534693442
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.531372477
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.536758125
built-ruby 1.555258616
built-ruby 1.544850275
built-ruby 1.546377385
built-ruby 1.545684506
built-ruby 1.54355092
built-ruby 1.541850832
built-ruby 1.570531494
built-ruby 1.624307692
built-ruby 1.546563614
built-ruby 1.549007168
-----------------------------------------------------------
so_sieve
# from http://www.bagley.org/~doug/shootout/bench/sieve/sieve.ruby
num = 500
count = i = j = 0
flags0 = Array.new(8192,1)
k = 0
while k < num
k += 1
count = 0
flags = flags0.dup
i = 2
while i<8192
i += 1
if flags[i]
# remove all multiples of prime: i
j = i*i
while j < 8192
j += i
flags[j] = nil
end
count += 1
end
end
end
count
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.621136517
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.639223485
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.620247885
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.628891104
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.62716846
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.642246855
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.621416619
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.625823561
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.649607916
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.620395338
built-ruby 0.613447442
built-ruby 0.639813685
built-ruby 0.6267636
built-ruby 0.621859655
built-ruby 0.616782328
built-ruby 0.640797933
built-ruby 0.625220894
built-ruby 0.615339487
built-ruby 0.621045886
built-ruby 0.636341641
-----------------------------------------------------------
so_spectralnorm
# The Computer Language Shootout
# http://shootout.alioth.debian.org/
# Contributed by Sokolov Yura
def eval_A(i,j)
return 1.0/((i+j)*(i+j+1)/2+i+1)
end
def eval_A_times_u(u)
v, i = nil, nil
(0..u.length-1).collect { |i|
v = 0
for j in 0..u.length-1
v += eval_A(i,j)*u[j]
end
v
}
end
def eval_At_times_u(u)
v, i = nil, nil
(0..u.length-1).collect{|i|
v = 0
for j in 0..u.length-1
v += eval_A(j,i)*u[j]
end
v
}
end
def eval_AtA_times_u(u)
return eval_At_times_u(eval_A_times_u(u))
end
n = 500 # ARGV[0].to_i
u=[1]*n
for i in 1..10
v=eval_AtA_times_u(u)
u=eval_AtA_times_u(v)
end
vBv=0
vv=0
for i in 0..n-1
vBv += u[i]*v[i]
vv += v[i]*v[i]
end
str = "%0.9f" % (Math.sqrt(vBv/vv)), "\n"
# print str
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.496116364
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.487788415
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.504159529
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.484176439
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.519259642
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.526467425
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.472999324
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.45407107
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.465526168
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.398941509
built-ruby 2.297059996
built-ruby 2.308222003
built-ruby 2.289032971
built-ruby 2.267067434
built-ruby 2.303815108
built-ruby 2.333067826
built-ruby 2.258365422
built-ruby 2.280507581
built-ruby 2.311777461
built-ruby 2.324072055
-----------------------------------------------------------
vm1_attr_ivar
class C
attr_reader :a, :b
def initialize
@a = nil
@b = nil
end
end
obj = C.new
i = 0
while i<30_000_000 # while loop 1
i += 1
j = obj.a
k = obj.b
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.51966587
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.522413326
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.563621097
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.624339685
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.52060048
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.52857923
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.531779716
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.509480744
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.526722672
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.510491894
built-ruby 2.117946696
built-ruby 2.035884998
built-ruby 2.065508159
built-ruby 2.065555181
built-ruby 2.035492983
built-ruby 1.767966621
built-ruby 2.02637861
built-ruby 2.08062807
built-ruby 2.06514877
built-ruby 1.493664032
-----------------------------------------------------------
vm1_attr_ivar_set
class C
attr_accessor :a, :b
def initialize
@a = nil
@b = nil
end
end
obj = C.new
i = 0
while i<30_000_000 # while loop 1
i += 1
obj.a = 1
obj.b = 2
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.818704437
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.842031862
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.826180486
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.849834971
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.838703817
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.826228588
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.891226528
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.853157792
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.818275004
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.831204282
built-ruby 1.832283244
built-ruby 1.841066287
built-ruby 1.964267992
built-ruby 1.853031514
built-ruby 1.95956251
built-ruby 1.848618482
built-ruby 1.913461268
built-ruby 1.889492008
built-ruby 1.918673342
built-ruby 1.845251399
-----------------------------------------------------------
vm1_block
def m
yield
end
i = 0
while i<30_000_000 # while loop 1
i += 1
m{
}
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.707923708
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.731367336
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.608328052
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.690321188
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.948255809
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.689793512
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.800429371
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.697618829
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.573578384
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.75442289
built-ruby 2.923039941
built-ruby 2.784192842
built-ruby 2.844498965
built-ruby 2.810101842
built-ruby 2.729091287
built-ruby 2.578962184
built-ruby 2.720380448
built-ruby 2.703453874
built-ruby 2.579669615
built-ruby 2.713521441
-----------------------------------------------------------
vm1_const
Const = 1
i = 0
while i<30_000_000 # while loop 1
i += 1
j = Const
k = Const
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.30953717
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.953617025
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.953563828
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.953431719
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.953377855
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.952548776
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.953554601
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.957060194
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.31688164
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.953681754
built-ruby 0.955356092
built-ruby 0.958710861
built-ruby 0.954859438
built-ruby 0.954864513
built-ruby 0.976808446
built-ruby 0.956771116
built-ruby 0.954883606
built-ruby 0.95654101
built-ruby 0.955537957
built-ruby 0.959087941
-----------------------------------------------------------
vm1_ensure
i = 0
while i<30_000_000 # benchmark loop 1
i += 1
begin
begin
ensure
end
ensure
end
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.690803292
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.692764851
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.690539055
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.695228305
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.688986272
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.689272852
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.690200836
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.691485911
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.691956178
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.694465586
built-ruby 0.689891176
built-ruby 0.689914965
built-ruby 0.691929585
built-ruby 0.689771085
built-ruby 0.690639641
built-ruby 0.692338675
built-ruby 0.690571213
built-ruby 0.689602142
built-ruby 0.685198577
built-ruby 0.689754812
-----------------------------------------------------------
vm1_float_simple
i = 0.0; f = 0.0
while i<30_000_000
i += 1
f += 0.1; f -= 0.1
f += 0.1; f -= 0.1
f += 0.1; f -= 0.1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 5.71446854
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 5.864905132
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 6.034185788
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 5.835228093
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 5.759906267
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 5.94566944
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 5.879862983
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 6.128341987
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 6.195056816
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 6.048346723
built-ruby 6.208011991
built-ruby 6.028059423
built-ruby 6.069889565
built-ruby 6.072863437
built-ruby 5.788695017
built-ruby 5.999257781
built-ruby 6.004277136
built-ruby 5.946714033
built-ruby 6.181818986
built-ruby 6.177091184
-----------------------------------------------------------
vm1_gc_short_lived
i = 0
while i<30_000_000 # while loop 1
a = '' # short-lived String
b = ''
c = ''
d = ''
e = ''
f = ''
i+=1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.103935384
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.047508148
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.07458451
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.095025464
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.03229508
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.256236512
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.050023527
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.9973488
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.087311955
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.279700075
built-ruby 12.044630632
built-ruby 12.054619454
built-ruby 12.099194455
built-ruby 12.077634895
built-ruby 11.998198574
built-ruby 12.032336992
built-ruby 12.060600977
built-ruby 12.253604193
built-ruby 12.056261374
built-ruby 12.156230927
-----------------------------------------------------------
vm1_gc_short_with_complex_long
def nested_hash h, n
if n == 0
''
else
10.times{
h[Object.new] = nested_hash(h, n-1)
}
end
end
long_lived = Hash.new
nested_hash long_lived, 6
GC.start
GC.start
i = 0
while i<30_000_000 # while loop 1
a = '' # short-lived String
b = ''
c = ''
d = ''
e = ''
f = ''
i+=1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 14.143090004
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 14.063903768
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 14.274061198
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.959445323
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.984994385
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 14.134151905
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 14.04259934
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 14.00448181
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 14.244458934
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 14.050325462
built-ruby 14.645018071
built-ruby 14.74406768
built-ruby 14.72855257
built-ruby 14.719624902
built-ruby 14.700953152
built-ruby 14.713752018
built-ruby 15.015210415
built-ruby 14.728951861
built-ruby 14.728405965
built-ruby 14.78233742
-----------------------------------------------------------
vm1_gc_short_with_long
long_lived = Array.new(1_000_000){|i| "#{i}"}
GC.start
GC.start
i = 0
while i<30_000_000 # while loop 1
a = '' # short-lived String
b = ''
c = ''
d = ''
e = ''
f = ''
i+=1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.135230748
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.089302674
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.994314911
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.081328582
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.154823187
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.129842893
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.100826945
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.040389308
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.343270682
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.056902135
built-ruby 13.215269491
built-ruby 13.203161095
built-ruby 13.0397638
built-ruby 13.096846951
built-ruby 13.143872337
built-ruby 12.990232646
built-ruby 13.12068113
built-ruby 13.401003767
built-ruby 13.234621349
built-ruby 13.062878415
-----------------------------------------------------------
vm1_gc_short_with_symbol
# make many symbols
50_000.times{|i| sym = "sym#{i}".to_sym}
GC.start
GC.start
i = 0
while i<30_000_000 # while loop 1
a = '' # short-lived String
b = ''
c = ''
d = ''
e = ''
f = ''
i+=1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.021750111
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.023958762
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.049305602
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.100388031
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.072279705
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.06697235
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.327492795
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.016082912
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.080044818
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.356864616
built-ruby 12.082417599
built-ruby 12.052217828
built-ruby 12.102523461
built-ruby 12.151430666
built-ruby 12.378410258
built-ruby 12.080441099
built-ruby 12.05511421
built-ruby 14.137308566
built-ruby 12.091990303
built-ruby 12.089307419
-----------------------------------------------------------
vm1_gc_wb_ary
long_lived = []
GC.start
GC.start
i = 0
short_lived = ''
while i<30_000_000 # while loop 1
long_lived[0] = short_lived # write barrier
i+=1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.370004393
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.363470145
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.360773107
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.366501428
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.365756639
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.367915131
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.338852658
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.367230192
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.357988359
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.377908179
built-ruby 1.354029674
built-ruby 1.358725313
built-ruby 1.373287805
built-ruby 1.360912706
built-ruby 1.358468983
built-ruby 1.35239174
built-ruby 1.357872899
built-ruby 1.347007041
built-ruby 1.355649501
built-ruby 1.362087127
-----------------------------------------------------------
vm1_gc_wb_obj
class C
attr_accessor :foo
end
long_lived = C.new
GC.start
GC.start
i = 0
short_lived = ''
while i<30_000_000 # while loop 1
long_lived.foo = short_lived # write barrier
i+=1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.367974321
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.346896684
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.412457106
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.393100887
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.362286829
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.33710947
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.358527348
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.416319777
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.36061233
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.721319482
built-ruby 1.373734863
built-ruby 1.369230696
built-ruby 1.405751915
built-ruby 1.526228538
built-ruby 1.402388417
built-ruby 1.385725011
built-ruby 1.367667536
built-ruby 1.397660519
built-ruby 1.522252139
built-ruby 1.491527587
-----------------------------------------------------------
vm1_ivar
@a = 1
i = 0
while i<30_000_000 # while loop 1
i += 1
j = @a
k = @a
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.115287573
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.118513405
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.138144556
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.276426776
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.085676454
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.111116858
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.115494402
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.097896449
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.104248382
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.123434922
built-ruby 1.012900867
built-ruby 1.272693173
built-ruby 1.012450694
built-ruby 1.311064002
built-ruby 1.006340948
built-ruby 1.291006875
built-ruby 1.016537527
built-ruby 1.012398198
built-ruby 1.02102678
built-ruby 1.017952281
-----------------------------------------------------------
vm1_ivar_set
i = 0
while i<30_000_000 # while loop 1
i += 1
@a = 1
@b = 2
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.160671144
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.167772975
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.163586048
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.167826809
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.162151755
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.156081161
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.164624474
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.176970341
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.16213741
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.162066713
built-ruby 1.161623814
built-ruby 1.407421509
built-ruby 1.295112754
built-ruby 1.176440107
built-ruby 1.22798862
built-ruby 1.245943043
built-ruby 1.534114753
built-ruby 1.321276268
built-ruby 1.164416707
built-ruby 1.530676979
-----------------------------------------------------------
vm1_length
a = 'abc'
b = [1, 2, 3]
i = 0
while i<30_000_000 # while loop 1
i += 1
a.length
b.length
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.317030732
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.311826233
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.337777782
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.322131645
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.313359131
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.313251489
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.312373632
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.313841409
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.31055721
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.315343577
built-ruby 1.318573949
built-ruby 1.308466675
built-ruby 1.308209493
built-ruby 1.339131542
built-ruby 1.42135744
built-ruby 1.308573728
built-ruby 1.313388659
built-ruby 1.307636523
built-ruby 1.317962332
built-ruby 1.307263644
-----------------------------------------------------------
vm1_lvar_init
def m v
unless v
# unreachable code
v1 = v2 = v3 = v4 = v5 = v6 = v7 = v8 = v9 = v10 =
v11 = v12 = v13 = v14 = v15 = v16 = v17 = v18 = v19 = v20 =
v21 = v22 = v23 = v24 = v25 = v26 = v27 = v28 = v29 = v30 =
v31 = v32 = v33 = v34 = v35 = v36 = v37 = v38 = v39 = v40 =
v41 = v42 = v43 = v44 = v45 = v46 = v47 = v48 = v49 = v50 = 1
end
end
i = 0
while i<30_000_000 # while loop 1
i += 1
m i
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.634191659
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.937827262
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.625180301
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.773867721
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.8300536
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.609281934
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.651686465
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.727577336
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.491486046
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.816172779
built-ruby 2.681127686
built-ruby 2.444818038
built-ruby 2.601330054
built-ruby 2.505702245
built-ruby 2.450301009
built-ruby 2.447992429
built-ruby 2.615683872
built-ruby 2.470050352
built-ruby 2.449143228
built-ruby 2.52710399
-----------------------------------------------------------
vm1_lvar_set
i = 0
while i<30_000_000 # while loop 1
i += 1
a = b = c = d = e = f = g = h = j = k = l = m = n = o = p = q = r = 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.00169442
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.014479649
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.994206834
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.018677585
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.988061984
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.930872317
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.157614884
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.019725614
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.994475303
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.996977815
built-ruby 3.008522895
built-ruby 3.008706591
built-ruby 2.997984384
built-ruby 2.996012397
built-ruby 2.997696119
built-ruby 3.018536675
built-ruby 2.998767265
built-ruby 3.00338167
built-ruby 3.011783332
built-ruby 3.014377965
-----------------------------------------------------------
vm1_neq
i = 0
obj1 = Object.new
obj2 = Object.new
while i<30_000_000 # while loop 1
i += 1
obj1 != obj2
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.280721885
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.267474183
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.280482221
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.272018067
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.270434618
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.332204776
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.278145141
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.269753758
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.284644526
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.280935188
built-ruby 1.257893247
built-ruby 1.255465418
built-ruby 1.253611059
built-ruby 1.255544308
built-ruby 1.260500302
built-ruby 1.258071215
built-ruby 1.253960738
built-ruby 1.256293975
built-ruby 1.255967596
built-ruby 1.301667373
-----------------------------------------------------------
vm1_not
i = 0
obj = Object.new
while i<30_000_000 # while loop 1
i += 1
!obj
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.939750996
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.951937949
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.957942861
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.937701416
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.942335298
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.949600842
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.939012854
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.955103198
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.945281274
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.962689225
built-ruby 0.949519568
built-ruby 0.94443893
built-ruby 0.948054634
built-ruby 0.946527927
built-ruby 0.945857018
built-ruby 0.934410587
built-ruby 0.930984102
built-ruby 0.940710785
built-ruby 0.936375372
built-ruby 0.935043557
-----------------------------------------------------------
vm1_rescue
i = 0
while i<30_000_000 # while loop 1
i += 1
begin
rescue
end
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.78436844
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.788382357
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.785725758
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.785976274
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.786624214
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.784506347
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.788579711
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.785328864
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.785867478
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.78524471
built-ruby 0.788085448
built-ruby 0.790489334
built-ruby 0.787780748
built-ruby 0.797775538
built-ruby 0.787673484
built-ruby 0.787267083
built-ruby 0.788500886
built-ruby 0.785794766
built-ruby 0.787405097
built-ruby 0.787268903
-----------------------------------------------------------
vm1_simplereturn
def m
return 1
end
i = 0
while i<30_000_000 # while loop 1
i += 1
m
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.634801199
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.624641045
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.589494777
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.607369327
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.60616045
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.623199766
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.608057029
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.610038279
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.669550572
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.609388966
built-ruby 1.60405475
built-ruby 1.606719219
built-ruby 1.612496054
built-ruby 1.610279745
built-ruby 1.608090794
built-ruby 1.617431555
built-ruby 1.614885145
built-ruby 1.611829406
built-ruby 1.626817328
built-ruby 1.609529619
-----------------------------------------------------------
vm1_swap
a = 1
b = 2
i = 0
while i<30_000_000 # while loop 1
i += 1
a, b = b, a
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.928668712
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.928993553
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.915595912
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.927511074
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.929676067
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.928357265
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.929477355
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.932947245
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.932863592
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.92945402
built-ruby 0.93047087
built-ruby 0.927691063
built-ruby 0.930174251
built-ruby 0.930543435
built-ruby 0.929446024
built-ruby 0.930495439
built-ruby 0.929216847
built-ruby 0.929876058
built-ruby 0.920568414
built-ruby 0.929958819
-----------------------------------------------------------
vm1_yield
def m
i = 0
while i<30_000_000 # while loop 1
i += 1
yield
end
end
m{}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.568600904
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.573330217
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.566678304
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.605918397
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.583881613
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.730416807
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.582746018
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.591758334
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.586074896
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.574743376
built-ruby 1.648935693
built-ruby 1.675447231
built-ruby 1.607968592
built-ruby 1.617634121
built-ruby 1.643235958
built-ruby 1.598717332
built-ruby 1.608013712
built-ruby 1.604548086
built-ruby 1.636749855
built-ruby 1.635681297
-----------------------------------------------------------
vm2_array
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
a = [1,2,3,4,5,6,7,8,9,10]
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.121868712
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.112586546
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.112763548
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.115767768
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.15816565
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.097617395
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.128142269
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.126567071
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.11280276
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.130153864
built-ruby 1.105927095
built-ruby 1.111777607
built-ruby 1.099978608
built-ruby 1.135751279
built-ruby 1.129340741
built-ruby 1.134411547
built-ruby 1.090643426
built-ruby 1.105507474
built-ruby 1.09049991
built-ruby 1.10203191
-----------------------------------------------------------
vm2_bigarray
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
a = [
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
1,2,3,4,5,6,7,8,9,10,
]
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.273636049
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.247091414
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.286639115
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.137723916
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.178868409
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.412888053
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.290736945
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.319284389
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.252756361
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 11.224323997
built-ruby 11.310124975
built-ruby 11.266606111
built-ruby 11.225907824
built-ruby 11.467840455
built-ruby 11.373162058
built-ruby 11.378355992
built-ruby 11.305642637
built-ruby 11.326620392
built-ruby 11.318046103
built-ruby 11.28522997
-----------------------------------------------------------
vm2_bighash
i = 0
while i<60_000 # benchmark loop 2
i += 1
a = {0=>0, 1=>1, 2=>2, 3=>3, 4=>4, 5=>5, 6=>6, 7=>7, 8=>8, 9=>9, 10=>10, 11=>11, 12=>12, 13=>13, 14=>14, 15=>15, 16=>16, 17=>17, 18=>18, 19=>19, 20=>20, 21=>21, 22=>22, 23=>23, 24=>24, 25=>25, 26=>26, 27=>27, 28=>28, 29=>29, 30=>30, 31=>31, 32=>32, 33=>33, 34=>34, 35=>35, 36=>36, 37=>37, 38=>38, 39=>39, 40=>40, 41=>41, 42=>42, 43=>43, 44=>44, 45=>45, 46=>46, 47=>47, 48=>48, 49=>49, 50=>50, 51=>51, 52=>52, 53=>53, 54=>54, 55=>55, 56=>56, 57=>57, 58=>58, 59=>59, 60=>60, 61=>61, 62=>62, 63=>63, 64=>64, 65=>65, 66=>66, 67=>67, 68=>68, 69=>69, 70=>70, 71=>71, 72=>72, 73=>73, 74=>74, 75=>75, 76=>76, 77=>77, 78=>78, 79=>79, 80=>80, 81=>81, 82=>82, 83=>83, 84=>84, 85=>85, 86=>86, 87=>87, 88=>88, 89=>89, 90=>90, 91=>91, 92=>92, 93=>93, 94=>94, 95=>95, 96=>96, 97=>97, 98=>98, 99=>99, 100=>100, 101=>101, 102=>102, 103=>103, 104=>104, 105=>105, 106=>106, 107=>107, 108=>108, 109=>109, 110=>110, 111=>111, 112=>112, 113=>113, 114=>114, 115=>115, 116=>116, 117=>117, 118=>118, 119=>119, 120=>120, 121=>121, 122=>122, 123=>123, 124=>124, 125=>125, 126=>126, 127=>127, 128=>128, 129=>129, 130=>130, 131=>131, 132=>132, 133=>133, 134=>134, 135=>135, 136=>136, 137=>137, 138=>138, 139=>139, 140=>140, 141=>141, 142=>142, 143=>143, 144=>144, 145=>145, 146=>146, 147=>147, 148=>148, 149=>149, 150=>150, 151=>151, 152=>152, 153=>153, 154=>154, 155=>155, 156=>156, 157=>157, 158=>158, 159=>159, 160=>160, 161=>161, 162=>162, 163=>163, 164=>164, 165=>165, 166=>166, 167=>167, 168=>168, 169=>169, 170=>170, 171=>171, 172=>172, 173=>173, 174=>174, 175=>175, 176=>176, 177=>177, 178=>178, 179=>179, 180=>180, 181=>181, 182=>182, 183=>183, 184=>184, 185=>185, 186=>186, 187=>187, 188=>188, 189=>189, 190=>190, 191=>191, 192=>192, 193=>193, 194=>194, 195=>195, 196=>196, 197=>197, 198=>198, 199=>199, 200=>200, 201=>201, 202=>202, 203=>203, 204=>204, 205=>205, 206=>206, 207=>207, 208=>208, 209=>209, 210=>210, 211=>211, 212=>212, 213=>213, 214=>214, 215=>215, 216=>216, 217=>217, 218=>218, 219=>219, 220=>220, 221=>221, 222=>222, 223=>223, 224=>224, 225=>225, 226=>226, 227=>227, 228=>228, 229=>229, 230=>230, 231=>231, 232=>232, 233=>233, 234=>234, 235=>235, 236=>236, 237=>237, 238=>238, 239=>239, 240=>240, 241=>241, 242=>242, 243=>243, 244=>244, 245=>245, 246=>246, 247=>247, 248=>248, 249=>249, 250=>250, 251=>251, 252=>252, 253=>253, 254=>254, 255=>255, 256=>256, 257=>257, 258=>258, 259=>259, 260=>260, 261=>261, 262=>262, 263=>263, 264=>264, 265=>265, 266=>266, 267=>267, 268=>268, 269=>269, 270=>270, 271=>271, 272=>272, 273=>273, 274=>274, 275=>275, 276=>276, 277=>277, 278=>278, 279=>279, 280=>280, 281=>281, 282=>282, 283=>283, 284=>284, 285=>285, 286=>286, 287=>287, 288=>288, 289=>289, 290=>290, 291=>291, 292=>292, 293=>293, 294=>294, 295=>295, 296=>296, 297=>297, 298=>298, 299=>299, 300=>300, 301=>301, 302=>302, 303=>303, 304=>304, 305=>305, 306=>306, 307=>307, 308=>308, 309=>309, 310=>310, 311=>311, 312=>312, 313=>313, 314=>314, 315=>315, 316=>316, 317=>317, 318=>318, 319=>319, 320=>320, 321=>321, 322=>322, 323=>323, 324=>324, 325=>325, 326=>326, 327=>327, 328=>328, 329=>329, 330=>330, 331=>331, 332=>332, 333=>333, 334=>334, 335=>335, 336=>336, 337=>337, 338=>338, 339=>339, 340=>340, 341=>341, 342=>342, 343=>343, 344=>344, 345=>345, 346=>346, 347=>347, 348=>348, 349=>349, 350=>350, 351=>351, 352=>352, 353=>353, 354=>354, 355=>355, 356=>356, 357=>357, 358=>358, 359=>359, 360=>360, 361=>361, 362=>362, 363=>363, 364=>364, 365=>365, 366=>366, 367=>367, 368=>368, 369=>369, 370=>370, 371=>371, 372=>372, 373=>373, 374=>374, 375=>375, 376=>376, 377=>377, 378=>378, 379=>379, 380=>380, 381=>381, 382=>382, 383=>383, 384=>384, 385=>385, 386=>386, 387=>387, 388=>388, 389=>389, 390=>390, 391=>391, 392=>392, 393=>393, 394=>394, 395=>395, 396=>396, 397=>397, 398=>398, 399=>399, 400=>400, 401=>401, 402=>402, 403=>403, 404=>404, 405=>405, 406=>406, 407=>407, 408=>408, 409=>409, 410=>410, 411=>411, 412=>412, 413=>413, 414=>414, 415=>415, 416=>416, 417=>417, 418=>418, 419=>419, 420=>420, 421=>421, 422=>422, 423=>423, 424=>424, 425=>425, 426=>426, 427=>427, 428=>428, 429=>429, 430=>430, 431=>431, 432=>432, 433=>433, 434=>434, 435=>435, 436=>436, 437=>437, 438=>438, 439=>439, 440=>440, 441=>441, 442=>442, 443=>443, 444=>444, 445=>445, 446=>446, 447=>447, 448=>448, 449=>449, 450=>450, 451=>451, 452=>452, 453=>453, 454=>454, 455=>455, 456=>456, 457=>457, 458=>458, 459=>459, 460=>460, 461=>461, 462=>462, 463=>463, 464=>464, 465=>465, 466=>466, 467=>467, 468=>468, 469=>469, 470=>470, 471=>471, 472=>472, 473=>473, 474=>474, 475=>475, 476=>476, 477=>477, 478=>478, 479=>479, 480=>480, 481=>481, 482=>482, 483=>483, 484=>484, 485=>485, 486=>486, 487=>487, 488=>488, 489=>489, 490=>490, 491=>491, 492=>492, 493=>493, 494=>494, 495=>495, 496=>496, 497=>497, 498=>498, 499=>499, 500=>500,}
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.284341286
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.252150505
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.264710151
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.348075808
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.305701603
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.365636793
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.273271881
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.332310845
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.292630057
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 8.335928959
built-ruby 7.172826071
built-ruby 7.045850511
built-ruby 7.061242378
built-ruby 7.083778668
built-ruby 7.231436649
built-ruby 6.99650581
built-ruby 7.048860151
built-ruby 7.100864803
built-ruby 7.044032351
built-ruby 7.03534662
-----------------------------------------------------------
vm2_case
i = 0
while i<6_000_000 # while loop 2
case :foo
when :bar
raise
when :baz
raise
when :boo
raise
when :foo
i += 1
end
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.255147799
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.260552685
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.258343899
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.257984835
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.256250294
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.25806769
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.255956113
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.262349225
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.267418919
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.25829243
built-ruby 0.261425531
built-ruby 0.262214874
built-ruby 0.26018095
built-ruby 0.262717702
built-ruby 0.258691312
built-ruby 0.257684272
built-ruby 0.26172564
built-ruby 0.256428464
built-ruby 0.268045575
built-ruby 0.263965092
-----------------------------------------------------------
vm2_defined_method
class Object
define_method(:m){}
end
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
m; m; m; m; m; m; m; m;
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.346133413
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.378742621
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.294092417
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.293539556
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.274355537
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.296236901
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.222748246
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.325026043
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.277487138
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 3.239733905
built-ruby 3.365833992
built-ruby 3.306552457
built-ruby 3.258809633
built-ruby 3.346184535
built-ruby 3.321523539
built-ruby 3.516951366
built-ruby 3.429493517
built-ruby 3.535931674
built-ruby 3.46452248
built-ruby 3.617529563
-----------------------------------------------------------
vm2_dstr
i = 0
x = y = 'z'
while i<6_000_000 # benchmark loop 2
i += 1
str = "foo#{x}bar#{y}baz"
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.622820108
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.627182804
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.639245122
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.642903747
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.620047495
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.623288479
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.64253773
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.620016465
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.623421859
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.632170331
built-ruby 1.628645852
built-ruby 1.626497695
built-ruby 1.669383769
built-ruby 1.654466836
built-ruby 1.627026296
built-ruby 1.681158241
built-ruby 1.634795759
built-ruby 1.620192015
built-ruby 1.670946052
built-ruby 1.685975446
-----------------------------------------------------------
vm2_eval
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
eval("1")
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 26.132844639
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 26.143925361
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 26.19911753
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 26.196381066
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 25.979756612
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 26.024400189
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 25.953662829
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 26.266193598
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 24.916444709
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 25.354920757
built-ruby 25.763871534
built-ruby 25.925822681
built-ruby 27.701118126
built-ruby 23.479242197
built-ruby 26.215361125
built-ruby 25.85174953
built-ruby 25.868148274
built-ruby 25.191033699
built-ruby 25.427630383
built-ruby 25.582812451
-----------------------------------------------------------
vm2_method
def m
nil
end
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
m; m; m; m; m; m; m; m;
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.755200467
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.96479474
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.750912731
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.794001735
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.732525098
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.820932708
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.694581559
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.698935396
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.698314576
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.678519062
built-ruby 1.689232721
built-ruby 1.700146264
built-ruby 1.693471533
built-ruby 1.736493351
built-ruby 1.692902754
built-ruby 1.746913115
built-ruby 1.778068021
built-ruby 1.674061227
built-ruby 1.683272759
built-ruby 1.706050582
-----------------------------------------------------------
vm2_method_missing
class C
def method_missing mid
end
end
obj = C.new
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m; obj.m;
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.833544595
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.512172777
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.500840884
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.499800936
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.666619706
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.6047719
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.667655903
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.818207196
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.600037884
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.675789193
built-ruby 2.482484906
built-ruby 2.47695018
built-ruby 2.670814487
built-ruby 2.608173949
built-ruby 2.523906454
built-ruby 2.498151646
built-ruby 2.548506303
built-ruby 2.539972472
built-ruby 2.487582362
built-ruby 2.553107476
-----------------------------------------------------------
vm2_method_with_block
def m
nil
end
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
m{}; m{}; m{}; m{}; m{}; m{}; m{}; m{};
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.96944598
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.421223686
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.42554205
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.920743669
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.96166542
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.997511607
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.937473514
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.949984731
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.904813378
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.892233301
built-ruby 1.923994793
built-ruby 1.897314448
built-ruby 1.917947358
built-ruby 1.914521619
built-ruby 2.031760715
built-ruby 1.903948779
built-ruby 1.948445942
built-ruby 1.928913226
built-ruby 1.905217971
built-ruby 1.896064203
-----------------------------------------------------------
vm2_mutex
require 'thread'
m = Mutex.new
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
m.synchronize{}
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.981764276
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.98635764
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.007474928
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.993722514
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.035311452
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.996075691
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.012701776
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.991572743
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.996640765
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.003920649
built-ruby 1.075170264
built-ruby 1.030129652
built-ruby 1.020759461
built-ruby 1.000638399
built-ruby 0.994710507
built-ruby 1.046969772
built-ruby 1.004929571
built-ruby 1.023840665
built-ruby 1.007138048
built-ruby 1.025367443
-----------------------------------------------------------
vm2_poly_method
class C1
def m
1
end
end
class C2
def m
2
end
end
o1 = C1.new
o2 = C2.new
i = 0
while i<6_000_000 # benchmark loop 2
o = (i % 2 == 0) ? o1 : o2
o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
i += 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.573310115
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.591884844
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.599230651
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.594221284
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.668044649
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.584669615
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.601072048
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.655557574
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.604577597
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.588541566
built-ruby 2.568908091
built-ruby 2.862782322
built-ruby 2.565131151
built-ruby 2.721578793
built-ruby 2.605200483
built-ruby 2.602106094
built-ruby 2.664140175
built-ruby 2.587541393
built-ruby 2.687506607
built-ruby 2.675693009
-----------------------------------------------------------
vm2_poly_method_ov
class C1
def m
1
end
end
class C2
def m
2
end
end
o1 = C1.new
o2 = C2.new
i = 0
while i<6_000_000 # benchmark loop 2
o = (i % 2 == 0) ? o1 : o2
# o.m; o.m; o.m; o.m; o.m; o.m; o.m; o.m
i += 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.290865803
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.290770351
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.29146641
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.290210636
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.291928292
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.290759217
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.291587822
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.291413938
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.291235217
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.291982903
built-ruby 0.293951582
built-ruby 0.313188633
built-ruby 0.310437399
built-ruby 0.291978279
built-ruby 0.290977546
built-ruby 0.291148758
built-ruby 0.292048399
built-ruby 0.31117159
built-ruby 0.29290938
built-ruby 0.291216286
-----------------------------------------------------------
vm2_proc
def m &b
b
end
pr = m{
a = 1
}
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
pr.call
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.630344528
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.715082993
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.680454719
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.637776689
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.630168098
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.642953976
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.647044971
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.672958924
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.648922469
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.629860828
built-ruby 0.675379573
built-ruby 0.756342483
built-ruby 0.649631913
built-ruby 0.637561297
built-ruby 0.633175326
built-ruby 0.6380674
built-ruby 0.638074257
built-ruby 0.682601752
built-ruby 0.633588825
built-ruby 0.675508228
-----------------------------------------------------------
vm2_raise1
def rec n
if n > 0
rec n-1
else
raise
end
end
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
begin
rec 1
rescue
# ignore
end
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 10.147565689
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.479349502
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.641583502
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.687156057
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.848562815
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.863190598
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.641514203
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.883714915
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.495703096
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 9.321690757
built-ruby 10.651201604
built-ruby 9.682256035
built-ruby 9.469614021
built-ruby 9.672527961
built-ruby 9.911840462
built-ruby 9.870273943
built-ruby 9.779642987
built-ruby 9.987943384
built-ruby 9.532011
built-ruby 9.331195529
-----------------------------------------------------------
vm2_raise2
def rec n
if n > 0
rec n-1
else
raise
end
end
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
begin
rec 10
rescue
# ignore
end
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.757381872
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.885540203
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.416778475
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.252497704
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.590162098
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.212483382
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 13.152894555
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.854956578
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.859747905
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 12.905773567
built-ruby 12.991162582
built-ruby 12.851898433
built-ruby 12.741654786
built-ruby 13.148480857
built-ruby 13.445075748
built-ruby 12.858940395
built-ruby 13.013640525
built-ruby 13.083824902
built-ruby 13.152170724
built-ruby 12.619837753
-----------------------------------------------------------
vm2_regexp
i = 0
str = 'xxxhogexxx'
while i<6_000_000 # benchmark loop 2
/hoge/ =~ str
i += 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.405883724
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.42332616
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.450741806
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.38641014
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.396019718
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.425551837
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.412616223
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.416183823
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.44206297
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 1.392636916
built-ruby 1.337369514
built-ruby 1.338488072
built-ruby 1.336167505
built-ruby 1.335478004
built-ruby 1.345565232
built-ruby 1.342820261
built-ruby 1.374788052
built-ruby 1.338676918
built-ruby 1.362613979
built-ruby 1.377501894
-----------------------------------------------------------
vm2_send
class C
def m
end
end
o = C.new
i = 0
while i<6_000_000 # benchmark loop 2
i += 1
o.__send__ :m
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.490438361
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.520504107
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.478320421
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.477293631
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.469486519
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.470715872
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.474099313
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.473366034
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.472993034
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.470841931
built-ruby 0.474157841
built-ruby 0.475378306
built-ruby 0.470716653
built-ruby 0.472501539
built-ruby 0.462898672
built-ruby 0.473916813
built-ruby 0.491714741
built-ruby 0.470093001
built-ruby 0.469272875
built-ruby 0.471475659
-----------------------------------------------------------
vm2_super
class C
def m
1
end
end
class CC < C
def m
super()
end
end
obj = CC.new
i = 0
while i<6_000_000 # benchmark loop 2
obj.m
i += 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.696510879
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.637647484
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.63791795
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.798262561
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.643767428
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.7143231
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.654385362
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.680023281
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.638299721
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.643989099
built-ruby 0.643277885
built-ruby 0.702340625
built-ruby 0.676130975
built-ruby 0.706254506
built-ruby 0.668713876
built-ruby 0.640024563
built-ruby 0.645120213
built-ruby 0.7076468
built-ruby 0.685115409
built-ruby 0.664026469
-----------------------------------------------------------
vm2_unif1
i = 0
def m a, b
end
while i<6_000_000 # benchmark loop 2
i += 1
m 100, 200
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.342349423
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.337527371
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.339828991
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.38419099
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.338047115
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.337408931
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.340883625
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.339692539
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.348185743
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.343260409
built-ruby 0.338504098
built-ruby 0.344024164
built-ruby 0.340317831
built-ruby 0.3477341
built-ruby 0.338128814
built-ruby 0.33836994
built-ruby 0.340814481
built-ruby 0.3390527
built-ruby 0.416568611
built-ruby 0.338792568
-----------------------------------------------------------
vm2_zsuper
i = 0
class C
def m a
1
end
end
class CC < C
def m a
super
end
end
obj = CC.new
while i<6_000_000 # benchmark loop 2
obj.m 10
i += 1
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.690054682
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.749674938
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.892319431
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.759309126
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.761316567
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.719023069
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.730092784
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.68093971
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.751928335
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.685182412
built-ruby 0.663868442
built-ruby 0.653877314
built-ruby 0.735214491
built-ruby 0.653619631
built-ruby 0.72341409
built-ruby 0.659342373
built-ruby 0.654166567
built-ruby 0.670953022
built-ruby 0.718910336
built-ruby 0.695897259
-----------------------------------------------------------
vm3_backtrace
# get last backtrace
begin
caller(0, 0)
rescue ArgumentError
alias caller_orig caller
def caller lev, n
caller_orig(lev)[0..n]
end
end
def rec n
if n < 0
100_000.times{
caller(0, 1)
}
else
rec(n-1)
end
end
rec 50
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.163666573
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.163637827
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.162567817
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.163006655
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.163628909
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.164373862
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.164514847
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.163944968
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.161767886
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.162455535
built-ruby 0.159418702
built-ruby 0.160932823
built-ruby 0.159003137
built-ruby 0.161690923
built-ruby 0.16173915
built-ruby 0.160979335
built-ruby 0.161826363
built-ruby 0.160026678
built-ruby 0.160973151
built-ruby 0.158913026
-----------------------------------------------------------
vm3_clearmethodcache
i = 0
while i<200_000
i += 1
Class.new{
def m; end
}
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.574428677
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.577888504
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.577249772
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.581855033
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.577149937
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.58761023
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.574530107
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.575299076
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.570352963
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.582242533
built-ruby 0.583379275
built-ruby 0.581074035
built-ruby 0.563170976
built-ruby 0.578314259
built-ruby 0.598524835
built-ruby 0.584221681
built-ruby 0.577570748
built-ruby 0.578514864
built-ruby 0.594644709
built-ruby 0.591821993
-----------------------------------------------------------
vm3_gc
#! /usr/bin/ruby
5000.times do
100.times do
{"xxxx"=>"yyyy"}
end
GC.start
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.907282282
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.91089758
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.913005885
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.909398391
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.919283496
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.91651891
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.906205631
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.919161793
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.919534072
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.920642437
built-ruby 0.920133405
built-ruby 0.917772627
built-ruby 0.913613302
built-ruby 0.918626163
built-ruby 0.926357009
built-ruby 0.912886932
built-ruby 0.908544994
built-ruby 0.913337095
built-ruby 0.910945118
built-ruby 0.917921905
-----------------------------------------------------------
vm_thread_alive_check1
5_000.times{
t = Thread.new{}
while t.alive?
Thread.pass
end
}
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.126859761
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.130241004
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.157968818
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.133777214
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134914735
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.131561189
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.141100535
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.134135154
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.135307516
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 0.140015072
built-ruby 0.123924095
built-ruby 0.128030796
built-ruby 0.135072184
built-ruby 0.12059235
built-ruby 0.123024871
built-ruby 0.128437124
built-ruby 0.133166177
built-ruby 0.125585424
built-ruby 0.124868254
built-ruby 0.130745292
-----------------------------------------------------------
vm_thread_create_join
i = 0
while i<100_000 # benchmark loop 3
i += 1
Thread.new{
}.join
end
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.157235958
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.087132338
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.105998232
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.177534994
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.097756249
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.101668803
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.000850609
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.202064387
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.134560902
ruby 2.2.0dev (2014-03-03 trunk 45261) [x86_64-linux] 2.120171736
built-ruby 1.936056494
built-ruby 2.102584771
built-ruby 2.023470103
built-ruby 2.101359715
built-ruby 2.021609548
built-ruby 2.14184126
built-ruby 2.175755252
built-ruby 2.207085929
built-ruby 1.928412988
built-ruby 2.140477411
-----------------------------------------------------------
vm_thread_mutex1
# one thread, one mutex (no contention)
require 'thread'
m = Mutex.new
r = 0
max = 2000
lmax = max * max
(1..1).map{
Thread.new{
i = 0
while i