ree 1.2.0 → 1.2.1
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_tracer.rb +39 -0
- data/lib/ree/object_compiler.rb +11 -0
- data/lib/ree/version.rb +1 -1
- data/lib/ree.rb +13 -0
- metadata +3 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 26a7ec18c35a9a6d79aad3f91f111bda3338547bc61f6f979ba226d2d5d393ab
|
|
4
|
+
data.tar.gz: b330811d3d6623eeb4aab2deb85f9687c3cbe53142987cb03bb3938608d7c786
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 10e3c7af5fa2f7255884071f960c4795dc2eb32c7974a8ce8daf2a6d44f7a02a09e088a2ceab09fe71a738694279576c325480193e6c6b896ecb830bbc5e99a0
|
|
7
|
+
data.tar.gz: 2e3f44006a5aa0764f4ff2dc2addd46a23845ba50abec919e770de25d6d8eac02dc1fa93d9b87d5d1ac59387b74f29f66ab812b36acc057f575c48626a8ad27d
|
data/Gemfile.lock
CHANGED
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
class Ree::BenchmarkTracer
|
|
4
|
+
Node = Struct.new(:name, :start_time, :duration, :children)
|
|
5
|
+
|
|
6
|
+
THREAD_KEY = :ree_benchmark_tracer
|
|
7
|
+
|
|
8
|
+
class << self
|
|
9
|
+
def trace(name)
|
|
10
|
+
stack = Thread.current[THREAD_KEY] ||= []
|
|
11
|
+
node = Node.new(name, Process.clock_gettime(Process::CLOCK_MONOTONIC), nil, [])
|
|
12
|
+
stack.last.children.push(node) if stack.last
|
|
13
|
+
stack.push(node)
|
|
14
|
+
|
|
15
|
+
begin
|
|
16
|
+
result = yield
|
|
17
|
+
ensure
|
|
18
|
+
node.duration = Process.clock_gettime(Process::CLOCK_MONOTONIC) - node.start_time
|
|
19
|
+
stack.pop
|
|
20
|
+
|
|
21
|
+
if stack.empty?
|
|
22
|
+
Thread.current[THREAD_KEY] = nil
|
|
23
|
+
print_tree(node)
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
result
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def print_tree(node, depth = 0)
|
|
33
|
+
indent = " " * depth
|
|
34
|
+
duration_ms = (node.duration * 1000).round(2)
|
|
35
|
+
$stdout.puts "#{indent}#{node.name} (#{duration_ms}ms)"
|
|
36
|
+
node.children.each { |child| print_tree(child, depth + 1) }
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
data/lib/ree/object_compiler.rb
CHANGED
|
@@ -160,6 +160,17 @@ class Ree::ObjectCompiler
|
|
|
160
160
|
#{str}
|
|
161
161
|
ruby_eval
|
|
162
162
|
|
|
163
|
+
if Ree.benchmark_mode? && object.fn? && !klass.instance_variable_get(:@__ree_benchmark_prepended)
|
|
164
|
+
klass.instance_variable_set(:@__ree_benchmark_prepended, true)
|
|
165
|
+
benchmark_name = "#{object.package_name}/#{object.name}"
|
|
166
|
+
benchmark_mod = Module.new do
|
|
167
|
+
define_method(:call) do |*args, **kwargs, &block|
|
|
168
|
+
Ree::BenchmarkTracer.trace(benchmark_name) { super(*args, **kwargs, &block) }
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
klass.prepend(benchmark_mod)
|
|
172
|
+
end
|
|
173
|
+
|
|
163
174
|
# compile all linked objects
|
|
164
175
|
links.each do |link|
|
|
165
176
|
pckg = @packages_facade.get_loaded_package(link.package_name)
|
data/lib/ree/version.rb
CHANGED
data/lib/ree.rb
CHANGED
|
@@ -8,6 +8,7 @@ require 'fileutils'
|
|
|
8
8
|
module Ree
|
|
9
9
|
autoload :Args, 'ree/args'
|
|
10
10
|
autoload :BeanDSL, 'ree/bean_dsl'
|
|
11
|
+
autoload :BenchmarkTracer, 'ree/benchmark_tracer'
|
|
11
12
|
autoload :CLI, 'ree/cli'
|
|
12
13
|
autoload :Container, 'ree/container'
|
|
13
14
|
autoload :Contracts, 'ree/contracts'
|
|
@@ -109,6 +110,18 @@ module Ree
|
|
|
109
110
|
!!@irb_mode
|
|
110
111
|
end
|
|
111
112
|
|
|
113
|
+
def enable_benchmark_mode
|
|
114
|
+
@benchmark_mode = true
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
def disable_benchmark_mode
|
|
118
|
+
@benchmark_mode = false
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def benchmark_mode?
|
|
122
|
+
!!@benchmark_mode
|
|
123
|
+
end
|
|
124
|
+
|
|
112
125
|
def set_logger_debug
|
|
113
126
|
logger.level = Logger::DEBUG
|
|
114
127
|
end
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: ree
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.2.
|
|
4
|
+
version: 1.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Ruslan Gatiyatov
|
|
8
8
|
bindir: exe
|
|
9
9
|
cert_chain: []
|
|
10
|
-
date:
|
|
10
|
+
date: 2026-02-08 00:00:00.000000000 Z
|
|
11
11
|
dependencies:
|
|
12
12
|
- !ruby/object:Gem::Dependency
|
|
13
13
|
name: commander
|
|
@@ -75,6 +75,7 @@ files:
|
|
|
75
75
|
- lib/ree.rb
|
|
76
76
|
- lib/ree/args.rb
|
|
77
77
|
- lib/ree/bean_dsl.rb
|
|
78
|
+
- lib/ree/benchmark_tracer.rb
|
|
78
79
|
- lib/ree/cli.rb
|
|
79
80
|
- lib/ree/cli/generate_package.rb
|
|
80
81
|
- lib/ree/cli/generate_packages_schema.rb
|