Class: Actor::Statistics
- Inherits:
-
Object
- Object
- Actor::Statistics
- Defined in:
- lib/actor/statistics.rb,
lib/actor/statistics/copy.rb,
lib/actor/statistics/timer.rb
Defined Under Namespace
Instance Attribute Summary collapse
-
#elapsed_time ⇒ Object
Returns the value of attribute elapsed_time.
-
#executions ⇒ Object
Returns the value of attribute executions.
-
#last_execution_time ⇒ Object
Returns the value of attribute last_execution_time.
-
#maximum_elapsed_time ⇒ Object
Returns the value of attribute maximum_elapsed_time.
-
#minimum_elapsed_time ⇒ Object
Returns the value of attribute minimum_elapsed_time.
-
#start_time ⇒ Object
Returns the value of attribute start_time.
-
#sum_elapsed_time_squared ⇒ Object
Returns the value of attribute sum_elapsed_time_squared.
- #timer ⇒ Object
Class Method Summary collapse
Instance Method Summary collapse
- #action_executed ⇒ Object
- #average_elapsed_time ⇒ Object
- #executing_action ⇒ Object
-
#initialize ⇒ Statistics
constructor
A new instance of Statistics.
- #standard_deviation ⇒ Object
Constructor Details
#initialize ⇒ Statistics
Returns a new instance of Statistics.
12 13 14 15 16 |
# File 'lib/actor/statistics.rb', line 12 def initialize @executions = 0 @elapsed_time = 0 @sum_elapsed_time_squared = 0 end |
Instance Attribute Details
#elapsed_time ⇒ Object
Returns the value of attribute elapsed_time.
3 4 5 |
# File 'lib/actor/statistics.rb', line 3 def elapsed_time @elapsed_time end |
#executions ⇒ Object
Returns the value of attribute executions.
4 5 6 |
# File 'lib/actor/statistics.rb', line 4 def executions @executions end |
#last_execution_time ⇒ Object
Returns the value of attribute last_execution_time.
5 6 7 |
# File 'lib/actor/statistics.rb', line 5 def last_execution_time @last_execution_time end |
#maximum_elapsed_time ⇒ Object
Returns the value of attribute maximum_elapsed_time.
6 7 8 |
# File 'lib/actor/statistics.rb', line 6 def maximum_elapsed_time @maximum_elapsed_time end |
#minimum_elapsed_time ⇒ Object
Returns the value of attribute minimum_elapsed_time.
7 8 9 |
# File 'lib/actor/statistics.rb', line 7 def minimum_elapsed_time @minimum_elapsed_time end |
#start_time ⇒ Object
Returns the value of attribute start_time.
8 9 10 |
# File 'lib/actor/statistics.rb', line 8 def start_time @start_time end |
#sum_elapsed_time_squared ⇒ Object
Returns the value of attribute sum_elapsed_time_squared.
9 10 11 |
# File 'lib/actor/statistics.rb', line 9 def sum_elapsed_time_squared @sum_elapsed_time_squared end |
Class Method Details
.build(actor) ⇒ Object
18 19 20 21 22 |
# File 'lib/actor/statistics.rb', line 18 def self.build actor instance = new actor.add_observer instance instance end |
Instance Method Details
#action_executed ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/actor/statistics.rb', line 30 def action_executed start_time, stop_time = timer.stop elapsed_time = stop_time - start_time self.elapsed_time += elapsed_time self.executions += 1 self.last_execution_time = stop_time self.maximum_elapsed_time = [elapsed_time, maximum_elapsed_time].compact.max self.minimum_elapsed_time = [elapsed_time, minimum_elapsed_time].compact.min self.sum_elapsed_time_squared += elapsed_time ** 2 end |
#average_elapsed_time ⇒ Object
43 44 45 46 47 |
# File 'lib/actor/statistics.rb', line 43 def average_elapsed_time return nil if executions.zero? Rational elapsed_time, executions end |
#executing_action ⇒ Object
24 25 26 27 28 |
# File 'lib/actor/statistics.rb', line 24 def executing_action now = timer.reset self.start_time ||= now end |
#standard_deviation ⇒ Object
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'lib/actor/statistics.rb', line 49 def standard_deviation return nil if executions.zero? average_elapsed_time = self.average_elapsed_time deviation = Math.sqrt( [ 0, Rational(sum_elapsed_time_squared, executions) - average_elapsed_time ** 2 ].max ) min = average_elapsed_time - deviation max = average_elapsed_time + deviation unless average_elapsed_time.zero? percent = Rational(deviation * 100, average_elapsed_time) end return deviation, min, max, percent end |