class DerailedBenchmarks::StatsForFile
A class for reading in benchmark results and converting them to numbers for comparison
Example:
puts `cat muhfile.bench.txt` 9.590142 0.831269 10.457801 ( 10.0) 9.836019 0.837319 10.728024 ( 11.0) x = StatsForFile.new(name: "muhcommit", file: "muhfile.bench.txt", desc: "I made it faster", time: Time.now) x.values #=> [11.437769, 11.792425] x.average # => 10.5 x.name # => "muhfile"
Attributes
desc[R]
name[R]
time[R]
values[R]
Public Class Methods
new(file:, name:, desc: "", time: )
click to toggle source
# File lib/derailed_benchmarks/stats_in_file.rb, line 21 def initialize(file:, name:, desc: "", time: ) @file = Pathname.new(file) FileUtils.touch(@file) @name = name @desc = desc @time = time end
Public Instance Methods
average()
click to toggle source
# File lib/derailed_benchmarks/stats_in_file.rb, line 41 def average @average.to_f end
call()
click to toggle source
# File lib/derailed_benchmarks/stats_in_file.rb, line 30 def call load_file! @median = (values[(values.length - 1) / 2] + values[values.length/ 2]) / 2.0 @average = values.inject(:+) / values.length end
median()
click to toggle source
# File lib/derailed_benchmarks/stats_in_file.rb, line 37 def median @median.to_f end
Private Instance Methods
load_file!()
click to toggle source
# File lib/derailed_benchmarks/stats_in_file.rb, line 45 def load_file! @values = [] @file.each_line do |line| line.match(/\( +(\d+\.\d+)\)/) begin values << BigDecimal($1) rescue => e raise e, "Problem with file #{@file.inspect}:\n#{@file.read}\n#{e.message}" end end values.sort! values.freeze end