Skip to content

Commit 37e225a

Browse files
authored
fix: Small perf improvement to generate_r (#1522)
1 parent cf8a18b commit 37e225a

File tree

2 files changed

+18
-1
lines changed

2 files changed

+18
-1
lines changed

api/benchmarks/id_generation_bench.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,16 @@ def generate_span_id_while
3535
id
3636
end
3737

38+
def generate_r(trace_id)
39+
x = trace_id[8, 8].unpack1('Q>') | 0x3
40+
64 - x.bit_length
41+
end
42+
43+
def generate_r_in_place(trace_id)
44+
x = trace_id.unpack1('Q>', offset: 8) | 0x3
45+
64 - x.bit_length
46+
end
47+
3848
Benchmark.ipsa do |x|
3949
x.report('generate_trace_id') { generate_trace_id }
4050
x.report('generate_trace_id_while') { generate_trace_id_while }
@@ -46,3 +56,10 @@ def generate_span_id_while
4656
x.report('generate_span_id_while') { generate_span_id_while }
4757
x.compare!
4858
end
59+
60+
Benchmark.ipsa do |x|
61+
trace_id = generate_trace_id
62+
x.report('generate_r') { generate_r(trace_id) }
63+
x.report('generate_r_in_place') { generate_r_in_place(trace_id) }
64+
x.compare!
65+
end

sdk_experimental/lib/opentelemetry/sdk/trace/samplers/consistent_probability_tracestate.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ def decimal(str)
106106
end
107107

108108
def generate_r(trace_id)
109-
x = trace_id[8, 8].unpack1('Q>') | 0x3
109+
x = trace_id.unpack1('Q>', offset: 8) | 0x3
110110
64 - x.bit_length
111111
end
112112
end

0 commit comments

Comments
 (0)