diff --git a/.gitignore b/.gitignore index a8b1cda..f8a8837 100644 --- a/.gitignore +++ b/.gitignore @@ -28,7 +28,7 @@ build/ # for a library or gem, you might want to ignore these files since the code is # intended to run in multiple environments; otherwise, check them in: -# Gemfile.lock +Gemfile.lock # .ruby-version # .ruby-gemset diff --git a/README.md b/README.md index 06ea3bf..60e8a68 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,46 @@ # benchmark-plot + A Ruby benchmark extension to allow comparative plotting of benchmarks. +# 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 for providing the co-working space during the Open Source Breakfast Hack during Red Dot Ruby Conf 2016 where this gem was built. +[@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.