module HopTimer
Constants
- TABLE_ELEMENTS
- TIME_VALUES
- TITLES
- VERSION
Public Class Methods
eval(check_point1, check_point2, time_value = :string)
click to toggle source
# File lib/hop_timer.rb, line 62 def self.eval(check_point1, check_point2, time_value = :string) time_value_validation(time_value) time_diff = check_point1 - check_point2 udiff = time_diff[:u_diff] sdiff = time_diff[:s_diff] cudiff = time_diff[:cu_diff] csdiff = time_diff[:cs_diff] realdiff = time_diff[:r_diff] report = Benchmark::Tms.new(udiff, sdiff, cudiff, csdiff, realdiff).to_s values = report_to_values(report) log_table(values, check_point1.name, check_point2.name) times_to_hash(values, time_value) end
Private Class Methods
log_and_enter(*lines)
click to toggle source
# File lib/hop_timer.rb, line 128 def self.log_and_enter(*lines) lines.each { |line| puts line + "\n" } end
log_table(times, name1, name2)
click to toggle source
# File lib/hop_timer.rb, line 89 def self.log_table(times, name1, name2) max_width = (times.map(&:length).max + 2) title = set_title(name1, name2, max_width) top_divider = TABLE_ELEMENTS[:top_divider] top_row = TABLE_ELEMENTS[:top_row] mid_divider = TABLE_ELEMENTS[:mid_divider] bot_row = TABLE_ELEMENTS[:bot_row] bot_divider = TABLE_ELEMENTS[:bot_divider] times.each_with_index do |val, i| top_divider << ("-" * max_width) mid_divider << ("-" * max_width) bot_divider << ("-" * max_width) if i == (times.length - 1) top_divider << TABLE_ELEMENTS[:top_right] mid_divider << TABLE_ELEMENTS[:mid_right] bot_divider << TABLE_ELEMENTS[:bot_right] else top_divider << TABLE_ELEMENTS[:top_center] mid_divider << TABLE_ELEMENTS[:mid_center] bot_divider << TABLE_ELEMENTS[:bot_center] end top_row << TITLES[i].center(max_width) + "|" bot_row << val.center(max_width) + "|" end log_and_enter(title, top_divider, top_row, mid_divider, bot_row, bot_divider) end
report_to_values(report)
click to toggle source
# File lib/hop_timer.rb, line 132 def self.report_to_values(report) values = report.to_s.gsub(/(\(|\))/, '').split(' ') values[-1] = values[-1] + "(s)" values end
set_title(name1, name2, width)
click to toggle source
# File lib/hop_timer.rb, line 121 def self.set_title(name1, name2, width) message = "Runtime between #{name1} and #{name2}" width = (width * 4) + 5 message.center(width, "=") end
str_to_float(str)
click to toggle source
# File lib/hop_timer.rb, line 159 def self.str_to_float(str) str.to_f / 1_000_000 end
time_value_validation(value_type)
click to toggle source
# File lib/hop_timer.rb, line 82 def self.time_value_validation(value_type) error_message = "time value can be :string or :float/:number" new_error = ArgumentError.new(error_message) raise new_error unless TIME_VALUES.include?(value_type) end
times_to_hash(times, value_type)
click to toggle source
# File lib/hop_timer.rb, line 140 def self.times_to_hash(times, value_type) times_hash = {} TITLES.each_with_index do |title, i| val = i == (TITLES.length - 1) ? times[i][0..-4] : times[i] output_val = case value_type when :string val else str_to_float(val) end times_hash[title] = output_val end times_hash end