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.
232 233 234 |
# File 'lib/waveform.rb', line 232 def initialize(io=$stdout) @io = io end |
Instance Attribute Details
#io ⇒ Object
Returns the value of attribute io.
230 231 232 |
# File 'lib/waveform.rb', line 230 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)
243 244 245 |
# File 'lib/waveform.rb', line 243 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.
261 262 263 264 265 |
# File 'lib/waveform.rb', line 261 def end! elapsed = (Time.now - @benchmarks[@current]) @current -= 1 elapsed end |
#out(msg) ⇒ Object
Prints the given message to the log
237 238 239 |
# File 'lib/waveform.rb', line 237 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)
253 254 255 256 |
# File 'lib/waveform.rb', line 253 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).
269 270 271 |
# File 'lib/waveform.rb', line 269 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).
275 276 277 278 279 280 |
# File 'lib/waveform.rb', line 275 def timed(=nil, &block) start! out() if yield done! end |