A Ruby benchmark extension to allow comparative plotting of benchmarks.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
lib/benchmark
spec
.gitignore
HISTORY.md
LICENSE
README.md
Rakefile
benchmark-plot.gemspec

README.md

benchmark-plot

A Ruby benchmark extension to allow comparative plotting of benchmarks.

Screencast

Watch a screencast of gem usage here.

Usage

This gem is mainly useful for benchmarking code over a number of inputs. This input should be supplied in the form of an object capable of calling #each.

Sample benchmarking script:

require 'benchmark/plot'

class TestArray
  attr_reader :arr

  def initialize arr
    @arr = arr
  end

  def to_s
    @arr.size.to_s
  end
end

test_data = [5, 25, 50, 75, 100, 125, 150, 175, 200,250,300]
test_data.map! {|e| TestArray.new(Array.new(e) {|i| i}) }

Benchmark.plot(test_data) do |x|
  x.report("map.flatten") do |data|
    data.arr.map { [nil]  }.flatten
  end

  x.report("flat_map") do |data|
    data.arr.flat_map { [nil] }
  end
end

Output:

Benchmarks

Acknowledgements

@tgxworld for providing the co-working space during the Open Source Breakfast Hack during Red Dot Ruby Conference 2016 where this gem was built.