# Copied from my benchmark_hell repo: github.com/sgonyea/benchmark_hell

require 'benchmark'

iters = 1000000

string = "Test String OMG"

puts 'String ranged index vs. "coordinates"'
Benchmark.bmbm do |x|
  x.report('ranged index') do
    iters.times.each do
      text = string[2..9]
    end
  end

  x.report('coordinates') do
    iters.times.each do
      text = string[2, 9]
    end
  end
end

=begin
rvm exec bash -c 'echo && echo $RUBY_VERSION && echo && ruby string_ranged_index.rb'


jruby-1.5.6

String ranged index vs. "coordinates"
Rehearsal ------------------------------------------------
ranged index   0.419000   0.000000   0.419000 (  0.372000)
coordinates    0.167000   0.000000   0.167000 (  0.167000)
--------------------------------------- total: 0.586000sec

                   user     system      total        real
ranged index   0.158000   0.000000   0.158000 (  0.159000)
coordinates    0.125000   0.000000   0.125000 (  0.125000)

macruby-0.7.1

String ranged index vs. "coordinates"
Rehearsal ------------------------------------------------
ranged index   1.490000   0.030000   1.520000 (  1.061326)
coordinates    1.410000   0.030000   1.440000 (  0.973640)
--------------------------------------- total: 2.960000sec

                   user     system      total        real
ranged index   1.520000   0.030000   1.550000 (  1.081424)
coordinates    1.480000   0.030000   1.510000 (  1.029214)

rbx-head

String ranged index vs. "coordinates"
Rehearsal ------------------------------------------------
ranged index   1.333304   0.009398   1.342702 (  1.229629)
coordinates    0.306087   0.000603   0.306690 (  0.303538)
--------------------------------------- total: 1.649392sec

                   user     system      total        real
ranged index   0.923626   0.001597   0.925223 (  0.927411)
coordinates    0.298910   0.000533   0.299443 (  0.300255)

ruby-1.8.7-p330

String ranged index vs. "coordinates"
Rehearsal ------------------------------------------------
ranged index   0.730000   0.000000   0.730000 (  0.738612)
coordinates    0.660000   0.000000   0.660000 (  0.660689)
--------------------------------------- total: 1.390000sec

                   user     system      total        real
ranged index   0.750000   0.000000   0.750000 (  0.746172)
coordinates    0.640000   0.000000   0.640000 (  0.640687)

ruby-1.9.2-p136

String ranged index vs. "coordinates"
Rehearsal ------------------------------------------------
ranged index   0.670000   0.000000   0.670000 (  0.679046)
coordinates    0.620000   0.000000   0.620000 (  0.622257)
--------------------------------------- total: 1.290000sec

                   user     system      total        real
ranged index   0.680000   0.000000   0.680000 (  0.686510)
coordinates    0.620000   0.000000   0.620000 (  0.624269)
=end