File tree Expand file tree Collapse file tree 2 files changed +54
-8
lines changed
Expand file tree Collapse file tree 2 files changed +54
-8
lines changed Original file line number Diff line number Diff line change 1+ # frozen_string_literal: true
2+
3+ # Copyright The OpenTelemetry Authors
4+ #
5+ # SPDX-License-Identifier: Apache-2.0
6+
7+ require 'benchmark/ipsa'
8+
9+ INVALID_SPAN_ID = ( "\0 " * 8 ) . b
10+ INVALID_TRACE_ID = ( "\0 " * 16 ) . b
11+
12+ def generate_trace_id
13+ loop do
14+ id = Random . bytes ( 16 )
15+ return id unless id == INVALID_TRACE_ID
16+ end
17+ end
18+
19+ def generate_trace_id_while
20+ id = Random . bytes ( 16 )
21+ id = Random . bytes ( 16 ) while id == INVALID_TRACE_ID
22+ id
23+ end
24+
25+ def generate_span_id
26+ loop do
27+ id = Random . bytes ( 8 )
28+ return id unless id == INVALID_SPAN_ID
29+ end
30+ end
31+
32+ def generate_span_id_while
33+ id = Random . bytes ( 8 )
34+ id = Random . bytes ( 8 ) while id == INVALID_SPAN_ID
35+ id
36+ end
37+
38+ Benchmark . ipsa do |x |
39+ x . report ( 'generate_trace_id' ) { generate_trace_id }
40+ x . report ( 'generate_trace_id_while' ) { generate_trace_id_while }
41+ x . compare!
42+ end
43+
44+ Benchmark . ipsa do |x |
45+ x . report ( 'generate_span_id' ) { generate_span_id }
46+ x . report ( 'generate_span_id_while' ) { generate_span_id_while }
47+ x . compare!
48+ end
Original file line number Diff line number Diff line change @@ -26,21 +26,19 @@ module Trace
2626 #
2727 # @return [String] a valid trace ID.
2828 def generate_trace_id
29- loop do
30- id = Random . bytes ( 16 )
31- return id unless id == INVALID_TRACE_ID
32- end
29+ id = Random . bytes ( 16 )
30+ id = Random . bytes ( 16 ) while id == INVALID_TRACE_ID
31+ id
3332 end
3433
3534 # Generates a valid span identifier, an 8-byte string with at least one
3635 # non-zero byte.
3736 #
3837 # @return [String] a valid span ID.
3938 def generate_span_id
40- loop do
41- id = Random . bytes ( 8 )
42- return id unless id == INVALID_SPAN_ID
43- end
39+ id = Random . bytes ( 8 )
40+ id = Random . bytes ( 8 ) while id == INVALID_SPAN_ID
41+ id
4442 end
4543
4644 # Returns the current span from the current or provided context
You can’t perform that action at this time.
0 commit comments