Sha256: fccf853f5433e41bde3091f293d313eeeecd88e6ae61206bf6c596796a979656

Contents?: true

Size: 1.47 KB

Versions: 9

Compression:

Stored size: 1.47 KB

Contents

# frozen_string_literal: true

module DerailedBenchmarks
  # 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"
  class StatsForFile
    attr_reader :name, :values, :desc, :time, :short_sha

    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

    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

    def empty?
      values.empty?
    end

    def median
      @median.to_f
    end

    def average
      @average.to_f
    end

    private 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
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
derailed_benchmarks-2.2.1 lib/derailed_benchmarks/stats_for_file.rb
derailed_benchmarks-2.2.0 lib/derailed_benchmarks/stats_for_file.rb
derailed_benchmarks-2.1.2 lib/derailed_benchmarks/stats_for_file.rb
derailed_benchmarks-2.1.1 lib/derailed_benchmarks/stats_for_file.rb
derailed_benchmarks-2.1.0 lib/derailed_benchmarks/stats_for_file.rb
derailed_benchmarks-2.0.1 lib/derailed_benchmarks/stats_for_file.rb
derailed_benchmarks-2.0.0 lib/derailed_benchmarks/stats_for_file.rb
derailed_benchmarks-1.8.1 lib/derailed_benchmarks/stats_for_file.rb
derailed_benchmarks-1.8.0 lib/derailed_benchmarks/stats_for_file.rb