Class: Rivulet::Telemetry
- Inherits:
-
Object
- Object
- Rivulet::Telemetry
show all
- Defined in:
- lib/rivulet/telemetry.rb,
lib/rivulet/telemetry/node.rb,
lib/rivulet/telemetry/timing_wrapper.rb,
lib/rivulet/telemetry/sequel_extension.rb
Defined Under Namespace
Modules: SequelExtension, TimingWrapper
Classes: Node
Instance Attribute Summary collapse
Instance Method Summary
collapse
Constructor Details
Returns a new instance of Telemetry.
5
6
7
8
9
10
|
# File 'lib/rivulet/telemetry.rb', line 5
def initialize
@started_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
@root = nil
@stack = []
@db_ms = 0.0
end
|
Instance Attribute Details
#db_ms ⇒ Object
Returns the value of attribute db_ms.
3
4
5
|
# File 'lib/rivulet/telemetry.rb', line 3
def db_ms
@db_ms
end
|
Instance Method Details
#flow ⇒ Object
45
46
47
|
# File 'lib/rivulet/telemetry.rb', line 45
def flow
@root
end
|
#print_flow(node = @root, offset = 0) ⇒ Object
49
50
51
52
53
54
55
56
57
58
59
60
|
# File 'lib/rivulet/telemetry.rb', line 49
def print_flow(node = @root, offset = 0)
entry = " " * 2 * offset
entry += "#{node.name} (#{node.self_ms})"
entry += " =>" if node.children.any?
entry += "\n"
node.children.each do |cnode|
entry += print_flow(cnode, offset + 1)
end
entry
end
|
#record_db(ms) ⇒ Object
37
38
39
|
# File 'lib/rivulet/telemetry.rb', line 37
def record_db(ms)
@db_ms = (@db_ms + ms).round(3)
end
|
#start_recording(activity) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/rivulet/telemetry.rb', line 12
def start_recording(activity)
node = Rivulet::Telemetry::Node.new(
name: activity.class.name,
started_at: Process.clock_gettime(Process::CLOCK_MONOTONIC),
children: []
)
if @stack.empty?
@root = node
else
@stack.last[:children] << node
end
@stack << node
end
|
#stop_recording(activity) ⇒ Object
28
29
30
31
32
33
34
35
|
# File 'lib/rivulet/telemetry.rb', line 28
def stop_recording(activity)
node = @stack.pop
node.ended_at = Process.clock_gettime(Process::CLOCK_MONOTONIC)
node.duration_ms =
((node.ended_at - node.started_at) * 1000.0).round(3)
node.self_ms =
(node.duration_ms - node.children.sum(&:duration_ms)).round(3)
end
|
#total_ms ⇒ Object
41
42
43
|
# File 'lib/rivulet/telemetry.rb', line 41
def total_ms
((Process.clock_gettime(Process::CLOCK_MONOTONIC) - @started_at) * 1000).round(3)
end
|