Sha256: 75269353b69486adacf1d408127e9372a6c1b2943e411d81aa656a0a7ca14e48

Contents?: true

Size: 637 Bytes

Versions: 3

Compression:

Stored size: 637 Bytes

Contents

# frozen_string_literal: true

# Released under the MIT License.
# Copyright, 2018-2022, by Samuel Williams.

module Benchmark
	module HTTP
		class Seconds
			UNITS = ["s", "ms", "µs"]
			SCALE = UNITS.size - 1
			
			def self.[](value)
				self.new(value)
			end
			
			def initialize(value)
				@value = value
			end
			
			def scale
				Math.log(@value) / Math.log(1000)
			end
			
			def to_s
				scaled_value = @value
				scale = 0
				
				while scaled_value < 1 && scale < SCALE
					scaled_value *= 1000
					scale += 1
				end
				
				return sprintf("%0.#{scale+1}f%s", scaled_value, UNITS.fetch(scale))
			end
		end
	end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
benchmark-http-0.18.0 lib/benchmark/http/seconds.rb
benchmark-http-0.16.1 lib/benchmark/http/seconds.rb
benchmark-http-0.16.0 lib/benchmark/http/seconds.rb