Class: Waveform::Log
- Inherits:
-
Object
- Object
- Waveform::Log
- Defined in:
- lib/waveform.rb
Overview
A simple class for logging + benchmarking, nice to have good feedback on a long batch operation.
There’s probably 10,000,000 other bechmarking classes, but writing this was easier than using Google.
Instance Attribute Summary collapse
-
#io ⇒ Object
Returns the value of attribute io.
Instance Method Summary collapse
-
#done!(msg = "") ⇒ Object
Prints the given message to the log followed by the most recent benchmark (note that it calls .end! which will stop the benchmark).
-
#end! ⇒ Object
Returns the elapsed time from the most recently started benchmark clock and ends the benchmark, so that a subsequent call to .end! will return the elapsed time from the previously started benchmark clock.
-
#initialize(io = $stdout) ⇒ Log
constructor
A new instance of Log.
-
#out(msg) ⇒ Object
Prints the given message to the log.
-
#start! ⇒ Object
Starts a new benchmark clock and returns the index of the new clock.
-
#time?(index) ⇒ Boolean
Returns the elapsed time from the benchmark clock w/ the given index (as returned from when .start! was called).
-
#timed(message = nil, &block) ⇒ Object
Benchmarks the given block, printing out the given message first (if given).
Constructor Details
#initialize(io = $stdout) ⇒ Log
Returns a new instance of Log.
243 244 245 |
# File 'lib/waveform.rb', line 243 def initialize(io=$stdout) @io = io end |
Instance Attribute Details
#io ⇒ Object
Returns the value of attribute io.
241 242 243 |
# File 'lib/waveform.rb', line 241 def io @io end |
Instance Method Details
#done!(msg = "") ⇒ Object
Prints the given message to the log followed by the most recent benchmark (note that it calls .end! which will stop the benchmark)
254 255 256 |
# File 'lib/waveform.rb', line 254 def done!(msg="") out "#{msg} (#{self.end!}s)\n" end |
#end! ⇒ Object
Returns the elapsed time from the most recently started benchmark clock and ends the benchmark, so that a subsequent call to .end! will return the elapsed time from the previously started benchmark clock.
272 273 274 275 276 |
# File 'lib/waveform.rb', line 272 def end! elapsed = (Time.now - @benchmarks[@current]) @current -= 1 elapsed end |
#out(msg) ⇒ Object
Prints the given message to the log
248 249 250 |
# File 'lib/waveform.rb', line 248 def out(msg) io.print(msg) if io end |
#start! ⇒ Object
Starts a new benchmark clock and returns the index of the new clock.
If .start! is called again before .end! then the time returned will be the elapsed time from the next call to start!, and calling .end! again will return the time from this call to start! (that is, the clocks are LIFO)
264 265 266 267 |
# File 'lib/waveform.rb', line 264 def start! (@benchmarks ||= []) << Time.now @current = @benchmarks.size - 1 end |
#time?(index) ⇒ Boolean
Returns the elapsed time from the benchmark clock w/ the given index (as returned from when .start! was called).
280 281 282 |
# File 'lib/waveform.rb', line 280 def time?(index) Time.now - @benchmarks[index] end |
#timed(message = nil, &block) ⇒ Object
Benchmarks the given block, printing out the given message first (if given).
286 287 288 289 290 291 |
# File 'lib/waveform.rb', line 286 def timed(=nil, &block) start! out() if yield done! end |