]> git.proxmox.com Git - ceph.git/blob - ceph/src/jaegertracing/opentelemetry-cpp/api/test/baggage/baggage_benchmark.cc
update ceph source to reef 18.1.2
[ceph.git] / ceph / src / jaegertracing / opentelemetry-cpp / api / test / baggage / baggage_benchmark.cc
1 // Copyright The OpenTelemetry Authors
2 // SPDX-License-Identifier: Apache-2.0
3
4 #include "opentelemetry/baggage/baggage.h"
5 #include "opentelemetry/nostd/string_view.h"
6
7 #include <benchmark/benchmark.h>
8 #include <cstdint>
9
10 using namespace opentelemetry::baggage;
11 namespace nostd = opentelemetry::nostd;
12
13 namespace
14 {
15
16 const size_t kNumEntries = 10;
17
18 std::string header_with_custom_entries(size_t num_entries)
19 {
20 std::string header;
21 for (size_t i = 0; i < num_entries; i++)
22 {
23 std::string key = "ADecentlyLargekey" + std::to_string(i);
24 std::string value = "ADecentlyLargeValue" + std::to_string(i);
25 header += key + "=" + value;
26 if (i != num_entries - 1)
27 {
28 header += ",";
29 }
30 }
31 return header;
32 }
33
34 void BM_CreateBaggageFromTenEntries(benchmark::State &state)
35 {
36 std::string header = header_with_custom_entries(kNumEntries);
37 while (state.KeepRunning())
38 {
39 auto baggage = Baggage::FromHeader(header);
40 }
41 }
42 BENCHMARK(BM_CreateBaggageFromTenEntries);
43
44 void BM_ExtractBaggageHavingTenEntries(benchmark::State &state)
45 {
46 auto baggage = Baggage::FromHeader(header_with_custom_entries(kNumEntries));
47 while (state.KeepRunning())
48 {
49 baggage->GetAllEntries([](nostd::string_view key, nostd::string_view value) { return true; });
50 }
51 }
52 BENCHMARK(BM_ExtractBaggageHavingTenEntries);
53
54 void BM_CreateBaggageFrom180Entries(benchmark::State &state)
55 {
56 std::string header = header_with_custom_entries(Baggage::kMaxKeyValuePairs);
57 while (state.KeepRunning())
58 {
59 auto baggage = Baggage::FromHeader(header);
60 }
61 }
62 BENCHMARK(BM_CreateBaggageFrom180Entries);
63
64 void BM_ExtractBaggageWith180Entries(benchmark::State &state)
65 {
66 auto baggage = Baggage::FromHeader(header_with_custom_entries(Baggage::kMaxKeyValuePairs));
67 while (state.KeepRunning())
68 {
69 baggage->GetAllEntries([](nostd::string_view key, nostd::string_view value) { return true; });
70 }
71 }
72 BENCHMARK(BM_ExtractBaggageWith180Entries);
73
74 void BM_SetValueBaggageWithTenEntries(benchmark::State &state)
75 {
76 auto baggage = Baggage::FromHeader(
77 header_with_custom_entries(kNumEntries - 1)); // 9 entries, and add one new
78 while (state.KeepRunning())
79 {
80 auto new_baggage = baggage->Set("new_key", "new_value");
81 }
82 }
83 BENCHMARK(BM_SetValueBaggageWithTenEntries);
84
85 void BM_SetValueBaggageWith180Entries(benchmark::State &state)
86 {
87 auto baggage = Baggage::FromHeader(header_with_custom_entries(
88 Baggage::kMaxKeyValuePairs - 1)); // keep 179 entries, and add one new
89 while (state.KeepRunning())
90 {
91 auto new_baggage = baggage->Set("new_key", "new_value");
92 }
93 }
94 BENCHMARK(BM_SetValueBaggageWith180Entries);
95
96 void BM_BaggageToHeaderTenEntries(benchmark::State &state)
97 {
98 auto baggage = Baggage::FromHeader(header_with_custom_entries(kNumEntries));
99 while (state.KeepRunning())
100 {
101 auto new_baggage = baggage->ToHeader();
102 }
103 }
104 BENCHMARK(BM_BaggageToHeaderTenEntries);
105
106 void BM_BaggageToHeader180Entries(benchmark::State &state)
107 {
108 auto baggage = Baggage::FromHeader(header_with_custom_entries(Baggage::kMaxKeyValuePairs));
109 while (state.KeepRunning())
110 {
111 auto new_baggage = baggage->ToHeader();
112 }
113 }
114 BENCHMARK(BM_BaggageToHeader180Entries);
115 } // namespace
116
117 BENCHMARK_MAIN();