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]
short_sha[R]
time[R]
values[R]
Public Class Methods
new(file:, name:, desc: "", time: , short_sha: nil)
click to toggle source
# File lib/derailed_benchmarks/stats_for_file.rb, line 21 def initialize(file:, name:, desc: "", time: , short_sha: nil) @file = Pathname.new(file) FileUtils.touch(@file) @name = name @desc = desc @time = time @short_sha = short_sha end
Public Instance Methods
average()
click to toggle source
# File lib/derailed_benchmarks/stats_for_file.rb, line 47 def average @average.to_f end
call()
click to toggle source
# File lib/derailed_benchmarks/stats_for_file.rb, line 31 def call load_file! return if values.empty? @median = (values[(values.length - 1) / 2] + values[values.length/ 2]) / 2.0 @average = values.inject(:+) / values.length end
empty?()
click to toggle source
# File lib/derailed_benchmarks/stats_for_file.rb, line 39 def empty? values.empty? end
median()
click to toggle source
# File lib/derailed_benchmarks/stats_for_file.rb, line 43 def median @median.to_f end
Private Instance Methods
load_file!()
click to toggle source
# File lib/derailed_benchmarks/stats_for_file.rb, line 51 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