Class: Vedeu::Logging::Timer

Inherits:
Object
  • Object
show all
Defined in:
lib/vedeu/logging/timer.rb

Overview

Measure the duration. Used for debugging.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(message = '') ⇒ Vedeu::Logging::Timer

Returns a new instance of Vedeu::Logging::Timer.

Parameters:

  • message (String) (defaults to: '')


29
30
31
32
# File 'lib/vedeu/logging/timer.rb', line 29

def initialize(message = '')
  @message = message
  @started = Time.now.to_f
end

Instance Attribute Details

#messageString (readonly, protected)

Returns:

  • (String)


54
55
56
# File 'lib/vedeu/logging/timer.rb', line 54

def message
  @message
end

#startedTime (readonly, protected)

Returns:

  • (Time)


50
51
52
# File 'lib/vedeu/logging/timer.rb', line 50

def started
  @started
end

Class Method Details

.timer(message = '', &block) ⇒ void

This method returns an undefined value.

Returns The return value of the executed block.

Examples:

Vedeu.timer 'message' do
  # ... code to be measured
end

Parameters:

  • message (String) (defaults to: '')
  • block (Proc)


19
20
21
# File 'lib/vedeu/logging/timer.rb', line 19

def timer(message = '', &block)
  new(message).measure(&block)
end

Instance Method Details

#elapsedFloat (protected)

Returns the elapsed time in milliseconds with 3 decimal places.

Returns:

  • (Float)


60
61
62
# File 'lib/vedeu/logging/timer.rb', line 60

def elapsed
  ((Time.now.to_f - started) * 1000).round(3)
end

#measurevoid

This method returns an undefined value.

Write an entry to the log file stating how long a section of code took in milliseconds. Useful for debugging performance.



38
39
40
41
42
43
44
# File 'lib/vedeu/logging/timer.rb', line 38

def measure
  work = yield

  Vedeu.log(type: :timer, message: "#{message} took #{elapsed}ms.")

  work
end