Class: LabTech::Speedup
- Inherits:
-
Object
- Object
- LabTech::Speedup
- Includes:
- Comparable
- Defined in:
- app/models/lab_tech/speedup.rb
Instance Attribute Summary collapse
-
#baseline ⇒ Object
readonly
Returns the value of attribute baseline.
-
#comparison ⇒ Object
readonly
Returns the value of attribute comparison.
-
#factor ⇒ Object
readonly
Returns the value of attribute factor.
-
#time ⇒ Object
readonly
Returns the value of attribute time.
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
-
#initialize(baseline: nil, comparison: nil, time: nil, factor: nil) ⇒ Speedup
constructor
A new instance of Speedup.
- #valid? ⇒ Boolean
Constructor Details
#initialize(baseline: nil, comparison: nil, time: nil, factor: nil) ⇒ Speedup
Returns a new instance of Speedup.
26 27 28 29 30 31 |
# File 'app/models/lab_tech/speedup.rb', line 26 def initialize(baseline: nil, comparison: nil, time: nil, factor: nil) @baseline = baseline &.to_f @comparison = comparison &.to_f @time = time &.to_f || compute_time_delta @factor = factor &.to_f || compute_factor end |
Instance Attribute Details
#baseline ⇒ Object (readonly)
Returns the value of attribute baseline.
3 4 5 |
# File 'app/models/lab_tech/speedup.rb', line 3 def baseline @baseline end |
#comparison ⇒ Object (readonly)
Returns the value of attribute comparison.
3 4 5 |
# File 'app/models/lab_tech/speedup.rb', line 3 def comparison @comparison end |
#factor ⇒ Object (readonly)
Returns the value of attribute factor.
3 4 5 |
# File 'app/models/lab_tech/speedup.rb', line 3 def factor @factor end |
#time ⇒ Object (readonly)
Returns the value of attribute time.
3 4 5 |
# File 'app/models/lab_tech/speedup.rb', line 3 def time @time end |
Class Method Details
.compute_factor(baseline, comparison) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'app/models/lab_tech/speedup.rb', line 12 def self.compute_factor(baseline, comparison) # Timing data should never be zero return nil if [ baseline, comparison ].any? { |e| e.to_f.zero? } time = compute_time_delta(baseline, comparison) return nil if time.nil? case when time > 0 ; +1 * baseline / comparison when time.zero? ; 0 when time < 0 ; -1 * comparison / baseline end end |
.compute_time_delta(baseline, comparison) ⇒ Object
5 6 7 8 9 10 |
# File 'app/models/lab_tech/speedup.rb', line 5 def self.compute_time_delta(baseline, comparison) return nil if baseline.nil? return nil if comparison.nil? baseline.to_f - comparison.to_f end |
Instance Method Details
#<=>(other) ⇒ Object
34 35 36 37 38 39 40 |
# File 'app/models/lab_tech/speedup.rb', line 34 def <=>(other) return nil unless other.kind_of?(self.class) return nil if self .factor.nil? return other if other.factor.nil? self.factor <=> other.factor end |
#valid? ⇒ Boolean
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'app/models/lab_tech/speedup.rb', line 42 def valid? return false if time.nil? return false if factor.nil? expected_time_delta = compute_time_delta expected_factor = compute_factor return false if expected_time_delta && ( time != expected_time_delta ) return false if expected_factor && ( factor != expected_factor ) true end |