<% def self.avg(xs) xs.inject(0, :+) / xs.length end def self.amortize(file) # We remove the first one to mitigate cache effects times = time_compilation(file, 6.times) times.shift avg(times.map { |_, t| t }) end %> { "chart": { "type": "column" }, "legend": { "enabled": false }, "xAxis": { "type": "category" }, "title": { "text": "Including various metaprogramming libraries" }, "plotOptions": { "series": { "borderWidth": 0, "dataLabels": { "enabled": true, "format": "{point.y:.5f}s" } } }, "series": [{ "name": "Include time", "colorByPoint": true, "data": [ { "name": "Baseline (no includes)", "y": <%= amortize('baseline.erb.cpp') %> }, { "name": "Boost.Hana", "y": <%= amortize('hana.erb.cpp') %> } <% if cmake_bool("@Boost_FOUND@") %> , { "name": "Boost.MPL", "y": <%= amortize('mpl.erb.cpp') %> }, { "name": "Boost.Fusion", "y": <%= amortize('fusion.erb.cpp') %> } <% end %> <% if cmake_bool("@MPL11_FOUND@") %> , { "name": "MPL11", "y": <%= amortize('mpl11.erb.cpp') %> } <% end %> <% if cmake_bool("@Meta_FOUND@") %> , { "name": "Meta", "y": <%= amortize('meta.erb.cpp') %> } <% end %> ] }] }