ree 1.2.8 → 1.2.9
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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/ree/benchmark_method_plugin.rb +2 -1
- data/lib/ree/benchmark_tracer.rb +22 -11
- data/lib/ree/dsl/object_dsl.rb +3 -2
- data/lib/ree/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: de6715c1964888c0f86b25091de6b5ebf5f4e98bd58bf5f2834fad7ccde51d7f
|
|
4
|
+
data.tar.gz: 8504c2530d359f0a42ffc4e9c5099d209b6c56015edb5b0611acf08f40f8b25e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7d734ade6264c85f2f868bd65244ca9eec0f16d5e02973cb1a8be29553adee16595895a9f6998f38a07d3ce30f2b264327b4754c3bc8ad20fe27ccc80b4257e9
|
|
7
|
+
data.tar.gz: 3e847b8c19a32df59eef05cb1000c9fc117da80c56d3d5b77f122e1d9a46d85d14f8627deba3a81c0930bd2a406939e36469b380cc5cbc47b59014184b17338a
|
data/Gemfile.lock
CHANGED
|
@@ -29,6 +29,7 @@ class Ree::BenchmarkMethodPlugin
|
|
|
29
29
|
def build_entry_point_wrapper(benchmark_name, config)
|
|
30
30
|
output_proc = config[:output] || ->(res) { $stdout.puts(res) }
|
|
31
31
|
deep = config.fetch(:deep, true)
|
|
32
|
+
hide_ree_lib = config.fetch(:hide_ree_lib, true)
|
|
32
33
|
once = config.fetch(:once, false)
|
|
33
34
|
benchmark_done = false
|
|
34
35
|
|
|
@@ -43,7 +44,7 @@ class Ree::BenchmarkMethodPlugin
|
|
|
43
44
|
end
|
|
44
45
|
else
|
|
45
46
|
benchmark_done = true if once
|
|
46
|
-
Ree::BenchmarkTracer.trace(benchmark_name, output_proc: output_proc, deep: deep) do
|
|
47
|
+
Ree::BenchmarkTracer.trace(benchmark_name, output_proc: output_proc, deep: deep, hide_ree_lib: hide_ree_lib) do
|
|
47
48
|
next_layer.call(*args, **kwargs, &block)
|
|
48
49
|
end
|
|
49
50
|
end
|
data/lib/ree/benchmark_tracer.rb
CHANGED
|
@@ -7,7 +7,7 @@ class Ree::BenchmarkTracer
|
|
|
7
7
|
|
|
8
8
|
class << self
|
|
9
9
|
# Entry point trace — starts collection, outputs when root completes
|
|
10
|
-
def trace(name, output_proc: nil, deep: true)
|
|
10
|
+
def trace(name, output_proc: nil, deep: true, hide_ree_lib: true)
|
|
11
11
|
stack = Thread.current[THREAD_KEY] ||= []
|
|
12
12
|
node = Node.new(name, Process.clock_gettime(Process::CLOCK_MONOTONIC), nil, [])
|
|
13
13
|
stack.last.children.push(node) if stack.last
|
|
@@ -24,9 +24,9 @@ class Ree::BenchmarkTracer
|
|
|
24
24
|
Thread.current[THREAD_KEY] = nil
|
|
25
25
|
|
|
26
26
|
if output_proc
|
|
27
|
-
output_proc.call(format_tree(node, deep: deep))
|
|
27
|
+
output_proc.call(format_tree(node, deep: deep, hide_ree_lib: hide_ree_lib))
|
|
28
28
|
else
|
|
29
|
-
$stdout.puts(format_tree(node, deep: deep))
|
|
29
|
+
$stdout.puts(format_tree(node, deep: deep, hide_ree_lib: hide_ree_lib))
|
|
30
30
|
end
|
|
31
31
|
end
|
|
32
32
|
end
|
|
@@ -60,21 +60,32 @@ class Ree::BenchmarkTracer
|
|
|
60
60
|
|
|
61
61
|
# Format tree as a string
|
|
62
62
|
# deep: false → only root node, deep: true → full tree
|
|
63
|
-
def format_tree(node, deep: true)
|
|
63
|
+
def format_tree(node, deep: true, hide_ree_lib: true)
|
|
64
64
|
lines = []
|
|
65
|
-
build_tree_lines(node, 0, lines, deep: deep)
|
|
65
|
+
build_tree_lines(node, 0, lines, deep: deep, hide_ree_lib: hide_ree_lib)
|
|
66
66
|
lines.join("\n")
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
private
|
|
70
70
|
|
|
71
|
-
def build_tree_lines(node, depth, lines, deep: true)
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
lines << "#{indent}#{node.name} (#{duration_ms}ms)"
|
|
71
|
+
def build_tree_lines(node, depth, lines, deep: true, hide_ree_lib: true)
|
|
72
|
+
# Check if this node should be filtered (ree_ package)
|
|
73
|
+
should_filter = hide_ree_lib && node.name.start_with?('ree_')
|
|
75
74
|
|
|
76
|
-
if
|
|
77
|
-
node
|
|
75
|
+
if should_filter
|
|
76
|
+
# Skip this node but process its children at the current depth (promote them)
|
|
77
|
+
if deep
|
|
78
|
+
node.children.each { |child| build_tree_lines(child, depth, lines, deep: deep, hide_ree_lib: hide_ree_lib) }
|
|
79
|
+
end
|
|
80
|
+
else
|
|
81
|
+
# Normal path: show this node
|
|
82
|
+
indent = " " * depth
|
|
83
|
+
duration_ms = (node.duration * 1000).round(2)
|
|
84
|
+
lines << "#{indent}#{node.name} (#{duration_ms}ms)"
|
|
85
|
+
|
|
86
|
+
if deep
|
|
87
|
+
node.children.each { |child| build_tree_lines(child, depth + 1, lines, deep: deep, hide_ree_lib: hide_ree_lib) }
|
|
88
|
+
end
|
|
78
89
|
end
|
|
79
90
|
end
|
|
80
91
|
end
|
data/lib/ree/dsl/object_dsl.rb
CHANGED
|
@@ -170,15 +170,16 @@ class Ree::ObjectDsl
|
|
|
170
170
|
@object.set_after_init(method_name)
|
|
171
171
|
end
|
|
172
172
|
|
|
173
|
-
def benchmark(once: false, deep: true, output: -> (res) { $stdout.puts(res) })
|
|
173
|
+
def benchmark(once: false, deep: true, hide_ree_lib: true, output: -> (res) { $stdout.puts(res) })
|
|
174
174
|
if !@object.fn?
|
|
175
175
|
raise_error("`benchmark` is only available for fn objects")
|
|
176
176
|
end
|
|
177
177
|
|
|
178
178
|
check_bool(once, :once)
|
|
179
179
|
check_bool(deep, :deep)
|
|
180
|
+
check_bool(hide_ree_lib, :hide_ree_lib)
|
|
180
181
|
|
|
181
|
-
config = { once: once, deep: deep, output: output }
|
|
182
|
+
config = { once: once, deep: deep, hide_ree_lib: hide_ree_lib, output: output }
|
|
182
183
|
@object.set_benchmark_config(config)
|
|
183
184
|
|
|
184
185
|
@object.klass.instance_variable_set(:@__ree_benchmark_config, config)
|
data/lib/ree/version.rb
CHANGED