Wrap text
Theme:
Clean (Pastie)
All Hallow's Eve
Blackboard
Brilliance Black
Cobalt
Espresso Libre
IDLE
Mac Classic
MagicWB (Amiga)
Pastels on Dark
Slate
Slush and Poppies
Sunburst
Sunburst (Josh)
Twilight
Vibrant Ink
benchmark
require 'benchmark'
total = (ENV['TOTAL'] || 1_000).to_i
strings = Dir["spec/**/*_spec.rb"]
numbers = Array.new(strings.size).fill { |i| strings[i].size }
Benchmark.bmbm do |x|
x.report("Fixnum#<=>") do
times = 0
while times < total
size = numbers.size
i = j = 0
while i < size
while j < size
numbers[i] <=> numbers[j]
j += 1
end
i += 1
end
times += 1
end
end
x.report("String#<=>") do
times = 0
while times < total
size = numbers.size
i = j = 0
while i < size
while j < size
strings[i] <=> strings[j]
j += 1
end
i += 1
end
times += 1
end
end
end
before
angelo:rubinius brian$ ruby -v
ruby 1.8.6 (2007-09-24 patchlevel 111) [universal-darwin9.0]
angelo:rubinius brian$ TOTAL=1_000 ruby spaceship.rb
Rehearsal ----------------------------------------------
Fixnum#<=> 2.140000 0.000000 2.140000 ( 2.141557)
String#<=> 2.240000 0.000000 2.240000 ( 2.252411)
------------------------------------- total: 4.380000sec
user system total real
Fixnum#<=> 2.150000 0.010000 2.160000 ( 2.160930)
String#<=> 2.260000 0.000000 2.260000 ( 2.255196)
angelo:rubinius brian$ shotgun/rubinius -v
rubinius 0.8.0 (ruby 1.8.6 compatible) (681156e0b) (02/05/2008) [i686-apple-darwin9.1.0]
angelo:rubinius brian$ TOTAL=1_000 shotgun/rubinius spaceship.rb
Rehearsal ----------------------------------------------
Fixnum#<=> 0.576426 0.000000 0.576426 ( 0.576411)
String#<=> 12.772771 0.000000 12.772771 ( 12.772771)
------------------------------------ total: 13.349197sec
user system total real
Fixnum#<=> 0.581613 0.000000 0.581613 ( 0.581600)
String#<=> 12.761486 0.000000 12.761486 ( 12.761486)
after while replaced Integer#times
angelo:rubinius brian$ TOTAL=1_000 shotgun/rubinius spaceship.rb
Rehearsal ----------------------------------------------
Fixnum#<=> 0.579724 0.000000 0.579724 ( 0.579695)
String#<=> 5.834347 0.000000 5.834347 ( 5.834344)
------------------------------------- total: 6.414071sec
user system total real
Fixnum#<=> 0.582978 0.000000 0.582978 ( 0.582972)
String#<=> 6.122626 0.000000 6.122626 ( 6.122642)
after ByteArray#compare_bytes fixed to take lengths
angelo:rubinius brian$ rm spaceship.rbc; TOTAL=1_000 shotgun/rubinius spaceship.rb
Rehearsal ----------------------------------------------
Fixnum#<=> 0.613617 0.000000 0.613617 ( 0.613589)
String#<=> 2.417588 0.000000 2.417588 ( 2.417580)
------------------------------------- total: 3.031205sec
user system total real
Fixnum#<=> 0.609608 0.000000 0.609608 ( 0.609608)
String#<=> 2.440267 0.000000 2.440267 ( 2.440282)