Files
redux-scraper/app/lib/stopwatch.rb
2025-08-05 05:05:21 +00:00

36 lines
721 B
Ruby

# typed: strict
# A simple stopwatch utility for measuring elapsed time
class Stopwatch
extend T::Sig
sig { params(start_time: T.any(Time, ActiveSupport::TimeWithZone)).void }
def initialize(start_time)
@start_time = T.let(start_time, T.any(Time, ActiveSupport::TimeWithZone))
end
sig { returns(Stopwatch) }
def self.start
new(Time.current)
end
sig { returns(Float) }
def elapsed
Time.current - @start_time
end
sig { returns(String) }
def elapsed_ms
"#{(elapsed * 1000).round(1)}ms"
end
sig { returns(String) }
def elapsed_s
"#{sprintf("%.3f", elapsed)}s"
end
sig { returns(T.any(Time, ActiveSupport::TimeWithZone)) }
def start_time
@start_time
end
end