evt-diagnostics-sample 0.1.2.0 → 0.2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eaebb460a7afe3e75318cff5e3a456e629465e610bcba05ec5e92fa269dc3ce5
4
- data.tar.gz: 861b6d711a66daae5d3ada8ee851ba63979b21b272eca714e4325ff2c6b6e4bc
3
+ metadata.gz: b85388ac039ba0e556809c31e671596ccf18f8f22c906e03ab2d1a024d1543e4
4
+ data.tar.gz: 8b59915f3a766aa2bcf19f4c6c5f7ef41d6263c4c3909bcd027868a100cce6da
5
5
  SHA512:
6
- metadata.gz: 6140d6cd712f5560695aa9224d6d869fb8cf95c274fb7817cb52a9fc9ae4740d4ccd6cf01c864fde1c5418e8e1851f64beb01897c9762ae734500e855892cb6e
7
- data.tar.gz: 0465da295d038744547a5c583fde76fa26324c6a793437b274d57abaa69624f116ef74fed02d6bb8f6f6089e049b929f33cf148916d604f42a527c371764b93a
6
+ metadata.gz: ad0d0ec1d27171db800c8f433017bd73ee321b3ed03a770ee956f8177152a8fbc008f7b9528a2fb55760c6402433871f55cd5ad6d27ea30e7a045238b443773f
7
+ data.tar.gz: 3efe0d3c1cb7927498b6922b7aa1da240be5c8bc24966ced2ac3f5ce1829e88b76cf22355ad75b994aaa8473ffe9e7db11fb00774940b873af0e09ba42c56c86
@@ -3,4 +3,8 @@ require 'clock/controls'
3
3
  require 'diagnostics/sample/controls/clock'
4
4
  require 'diagnostics/sample/controls/time'
5
5
 
6
+ require 'diagnostics/sample/controls/frequency'
7
+ require 'diagnostics/sample/controls/mean'
6
8
  require 'diagnostics/sample/controls/standard_deviation'
9
+
10
+ require 'diagnostics/sample/controls/result'
@@ -0,0 +1,19 @@
1
+ module Diagnostics
2
+ class Sample
3
+ module Controls
4
+ module Frequency
5
+ module Values
6
+ def self.milliseconds
7
+ Mean::Values.example
8
+ end
9
+ end
10
+
11
+ module Result
12
+ def self.example
13
+ 1_000 / Mean::Result.example
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,19 @@
1
+ module Diagnostics
2
+ class Sample
3
+ module Controls
4
+ module Mean
5
+ module Values
6
+ def self.example
7
+ [1, 1, 1, 11, 111]
8
+ end
9
+ end
10
+
11
+ module Result
12
+ def self.example
13
+ 25
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,35 @@
1
+ module Diagnostics
2
+ class Sample
3
+ module Controls
4
+ module Result
5
+ def self.example
6
+ result = Sample::Result.new
7
+
8
+ StandardDeviation::Values.example.each do |value|
9
+ result.cycle(value)
10
+ end
11
+
12
+ result
13
+ end
14
+
15
+ module Digest
16
+ def self.example
17
+ values = [
18
+ StandardDeviation::Values.sum,
19
+ StandardDeviation::Values.mean,
20
+ StandardDeviation::Values.frequency,
21
+ StandardDeviation::Result.example
22
+ ]
23
+
24
+ <<~TEXT % values
25
+ Cycle Time: %fms
26
+ Mean Cycle Time: %fms
27
+ Cycles Per Second: %f
28
+ Cycle Time Standard Deviation: %fms
29
+ TEXT
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -3,12 +3,28 @@ module Diagnostics
3
3
  module Controls
4
4
  module StandardDeviation
5
5
  # Source: https://en.wikipedia.org/wiki/Standard_deviation#Population_standard_deviation_of_grades_of_eight_students (Nathan Ladd, Wed 30 May 2018)
6
- def self.values
7
- [2, 4, 4, 4, 5, 5, 7, 9]
6
+ module Values
7
+ def self.example
8
+ [2, 4, 4, 4, 5, 5, 7, 9]
9
+ end
10
+
11
+ def self.sum
12
+ 40
13
+ end
14
+
15
+ def self.mean
16
+ 5
17
+ end
18
+
19
+ def self.frequency
20
+ 200
21
+ end
8
22
  end
9
23
 
10
- def self.result
11
- 2
24
+ module Result
25
+ def self.example
26
+ 2
27
+ end
12
28
  end
13
29
  end
14
30
  end
@@ -47,11 +47,11 @@ module Diagnostics
47
47
 
48
48
  ::GC.enable unless gc
49
49
 
50
- elapsed_time = end_time - start_time
50
+ elapsed_time_nanoseconds = end_time - start_time
51
51
 
52
- logger.trace { "Action measured (GC: #{gc.inspect}, Elapsed Time: #{LogText.elapsed_time_milliseconds(elapsed_time)})" }
52
+ logger.trace { "Action measured (GC: #{gc.inspect}, Elapsed Time: #{LogText.elapsed_time_milliseconds(elapsed_time_nanoseconds)})" }
53
53
 
54
- elapsed_time
54
+ elapsed_time_nanoseconds
55
55
  end
56
56
 
57
57
  module LogText
@@ -23,7 +23,7 @@ module Diagnostics
23
23
  cycle_time_milliseconds / cycles
24
24
  end
25
25
 
26
- def cycle_frequency
26
+ def cycles_per_second
27
27
  cycles / (cycle_time_milliseconds / 1_000)
28
28
  end
29
29
 
@@ -32,6 +32,7 @@ module Diagnostics
32
32
 
33
33
  Math.sqrt(variance)
34
34
  end
35
+ alias_method :standard_deviation, :cycle_time_standard_deviation
35
36
 
36
37
  def warmup_cycle(elapsed_time)
37
38
  self.warmup_cycle_time_milliseconds += elapsed_time
@@ -45,7 +46,7 @@ module Diagnostics
45
46
  warmup_cycle_time_milliseconds / warmup_cycles
46
47
  end
47
48
 
48
- def warmup_cycle_frequency
49
+ def warmup_cycles_per_second
49
50
  warmup_cycles / (warmup_cycle_time_milliseconds / 1_000)
50
51
  end
51
52
 
@@ -54,6 +55,16 @@ module Diagnostics
54
55
 
55
56
  Math.sqrt(variance)
56
57
  end
58
+
59
+ def digest
60
+ <<~TEXT % [cycle_time_milliseconds, mean_cycle_time_milliseconds, cycles_per_second, cycle_time_standard_deviation]
61
+ Cycle Time: %fms
62
+ Mean Cycle Time: %fms
63
+ Cycles Per Second: %f
64
+ Cycle Time Standard Deviation: %fms
65
+ TEXT
66
+ end
67
+ alias_method :to_s, :digest
57
68
  end
58
69
  end
59
70
  end
@@ -41,7 +41,9 @@ module Diagnostics
41
41
  logger.trace { "Starting warmup (Warmup Cycles: #{warmup_cycles})" }
42
42
 
43
43
  warmup_cycles.times do
44
- elapsed_time = measure.()
44
+ elapsed_time_nanoseconds = measure.()
45
+
46
+ elapsed_time = milliseconds(elapsed_time_nanoseconds)
45
47
 
46
48
  result.warmup_cycle(elapsed_time)
47
49
  end
@@ -51,7 +53,9 @@ module Diagnostics
51
53
  logger.trace { "Starting sample (Cycles: #{cycles}, Warmup Cycles: #{warmup_cycles})" }
52
54
 
53
55
  cycles.times do
54
- elapsed_time = measure.()
56
+ elapsed_time_nanoseconds = measure.()
57
+
58
+ elapsed_time = milliseconds(elapsed_time_nanoseconds)
55
59
 
56
60
  result.cycle(elapsed_time)
57
61
  end
@@ -60,5 +64,9 @@ module Diagnostics
60
64
 
61
65
  result
62
66
  end
67
+
68
+ def milliseconds(nanoseconds)
69
+ Rational(nanoseconds, 1_000_000)
70
+ end
63
71
  end
64
72
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: evt-diagnostics-sample
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2.0
4
+ version: 0.2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - The Eventide Project
@@ -75,6 +75,9 @@ files:
75
75
  - lib/diagnostics/sample.rb
76
76
  - lib/diagnostics/sample/controls.rb
77
77
  - lib/diagnostics/sample/controls/clock.rb
78
+ - lib/diagnostics/sample/controls/frequency.rb
79
+ - lib/diagnostics/sample/controls/mean.rb
80
+ - lib/diagnostics/sample/controls/result.rb
78
81
  - lib/diagnostics/sample/controls/standard_deviation.rb
79
82
  - lib/diagnostics/sample/controls/time.rb
80
83
  - lib/diagnostics/sample/defaults.rb