Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/v0dro/benchmark-plot

A Ruby benchmark extension to allow comparative plotting of benchmarks.
https://github.com/v0dro/benchmark-plot

Last synced: 24 days ago
JSON representation

A Ruby benchmark extension to allow comparative plotting of benchmarks.

Awesome Lists containing this project

README

        

# benchmark-plot

A Ruby benchmark extension to allow comparative plotting of benchmarks.

# Screencast

Watch a screencast of gem usage [here](https://www.youtube.com/watch?v=WW6M4Df-soQ).

# 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:

``` ruby
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](examples/mapflat_vs_flat_map/benchmark_plot_graph.png)

# Acknowledgements

[@tgxworld](https://github.com/tgxworld) for providing the co-working space during the Open Source Breakfast Hack during Red Dot Ruby Conference 2016 where this gem was built.