Skip to content

Commit

Permalink
baggage benchmark (#861)
Browse files Browse the repository at this point in the history
  • Loading branch information
lalitb authored Jun 18, 2021
1 parent a779c3b commit 61c0139
Show file tree
Hide file tree
Showing 3 changed files with 126 additions and 0 deletions.
6 changes: 6 additions & 0 deletions api/test/baggage/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,9 @@ cc_test(
"@com_google_googletest//:gtest_main",
],
)

otel_cc_benchmark(
name = "baggage_benchmark",
srcs = ["baggage_benchmark.cc"],
deps = ["//api"],
)
3 changes: 3 additions & 0 deletions api/test/baggage/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,7 @@ foreach(testname baggage_test)
TEST_PREFIX baggage.
TEST_LIST ${testname})
endforeach()
add_executable(baggage_benchmark baggage_benchmark.cc)
target_link_libraries(baggage_benchmark benchmark::benchmark
${CMAKE_THREAD_LIBS_INIT} opentelemetry_api)
add_subdirectory(propagation)
117 changes: 117 additions & 0 deletions api/test/baggage/baggage_benchmark.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
// Copyright The OpenTelemetry Authors
// SPDX-License-Identifier: Apache-2.0

#include "opentelemetry/baggage/baggage.h"
#include "opentelemetry/nostd/string_view.h"

#include <benchmark/benchmark.h>
#include <cstdint>

using namespace opentelemetry::baggage;
namespace nostd = opentelemetry::nostd;

namespace
{

const size_t kNumEntries = 10;

std::string header_with_custom_entries(size_t num_entries)
{
std::string header;
for (size_t i = 0; i < num_entries; i++)
{
std::string key = "ADecentlyLargekey" + std::to_string(i);
std::string value = "ADecentlyLargeValue" + std::to_string(i);
header += key + "=" + value;
if (i != num_entries - 1)
{
header += ",";
}
}
return header;
}

void BM_CreateBaggageFromTenEntries(benchmark::State &state)
{
std::string header = header_with_custom_entries(kNumEntries);
while (state.KeepRunning())
{
auto baggage = Baggage::FromHeader(header);
}
}
BENCHMARK(BM_CreateBaggageFromTenEntries);

void BM_ExtractBaggageHavingTenEntries(benchmark::State &state)
{
auto baggage = Baggage::FromHeader(header_with_custom_entries(kNumEntries));
while (state.KeepRunning())
{
baggage->GetAllEntries([](nostd::string_view key, nostd::string_view value) { return true; });
}
}
BENCHMARK(BM_ExtractBaggageHavingTenEntries);

void BM_CreateBaggageFrom180Entries(benchmark::State &state)
{
std::string header = header_with_custom_entries(Baggage::kMaxKeyValuePairs);
while (state.KeepRunning())
{
auto baggage = Baggage::FromHeader(header);
}
}
BENCHMARK(BM_CreateBaggageFrom180Entries);

void BM_ExtractBaggageWith180Entries(benchmark::State &state)
{
auto baggage = Baggage::FromHeader(header_with_custom_entries(Baggage::kMaxKeyValuePairs));
while (state.KeepRunning())
{
baggage->GetAllEntries([](nostd::string_view key, nostd::string_view value) { return true; });
}
}
BENCHMARK(BM_ExtractBaggageWith180Entries);

void BM_SetValueBaggageWithTenEntries(benchmark::State &state)
{
auto baggage = Baggage::FromHeader(
header_with_custom_entries(kNumEntries - 1)); // 9 entries, and add one new
while (state.KeepRunning())
{
auto new_baggage = baggage->Set("new_key", "new_value");
}
}
BENCHMARK(BM_SetValueBaggageWithTenEntries);

void BM_SetValueBaggageWith180Entries(benchmark::State &state)
{
auto baggage = Baggage::FromHeader(header_with_custom_entries(
Baggage::kMaxKeyValuePairs - 1)); // keep 179 entries, and add one new
while (state.KeepRunning())
{
auto new_baggage = baggage->Set("new_key", "new_value");
}
}
BENCHMARK(BM_SetValueBaggageWith180Entries);

void BM_BaggageToHeaderTenEntries(benchmark::State &state)
{
auto baggage = Baggage::FromHeader(header_with_custom_entries(kNumEntries));
while (state.KeepRunning())
{
auto new_baggage = baggage->ToHeader();
}
}
BENCHMARK(BM_BaggageToHeaderTenEntries);

void BM_BaggageToHeader180Entries(benchmark::State &state)
{
auto baggage = Baggage::FromHeader(header_with_custom_entries(Baggage::kMaxKeyValuePairs));
while (state.KeepRunning())
{
auto new_baggage = baggage->ToHeader();
}
}
BENCHMARK(BM_BaggageToHeader180Entries);
} // namespace

BENCHMARK_MAIN();

0 comments on commit 61c0139

Please sign in to comment.