Skip to content

Commit

Permalink
Add benchmarks for variant
Browse files Browse the repository at this point in the history
  • Loading branch information
mingxwa committed Oct 10, 2024
1 parent 7f35556 commit 91a22bf
Showing 1 changed file with 29 additions and 0 deletions.
29 changes: 29 additions & 0 deletions benchmarks/proxy_management_benchmark.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
#include <memory_resource>
#include <mutex>
#include <string>
#include <variant>

#include <benchmark/benchmark.h>

Expand Down Expand Up @@ -114,6 +115,19 @@ void BM_SmallObjectManagementWithAny(benchmark::State& state) {
}
}

void BM_SmallObjectManagementWithVariant(benchmark::State& state) {
for (auto _ : state) {
std::vector<std::variant<SmallObject1, SmallObject2, SmallObject3>> data;
data.reserve(TestManagedObjectCount);
for (int i = 0; i < TestManagedObjectCount; i += TypeSeriesCount) {
data.emplace_back(SmallObject1{});
data.emplace_back(SmallObject2{});
data.emplace_back(SmallObject3{});
}
benchmark::DoNotOptimize(data);
}
}

void BM_LargeObjectManagementWithProxy(benchmark::State& state) {
for (auto _ : state) {
std::vector<pro::proxy<DefaultFacade>> data;
Expand Down Expand Up @@ -196,14 +210,29 @@ void BM_LargeObjectManagementWithAny(benchmark::State& state) {
}
}

void BM_LargeObjectManagementWithVariant(benchmark::State& state) {
for (auto _ : state) {
std::vector<std::variant<LargeObject1, LargeObject2, LargeObject3>> data;
data.reserve(TestManagedObjectCount);
for (int i = 0; i < TestManagedObjectCount; i += TypeSeriesCount) {
data.emplace_back(LargeObject1{});
data.emplace_back(LargeObject2{});
data.emplace_back(LargeObject3{});
}
benchmark::DoNotOptimize(data);
}
}

BENCHMARK(BM_SmallObjectManagementWithProxy);
BENCHMARK(BM_SmallObjectManagementWithUniquePtr);
BENCHMARK(BM_SmallObjectManagementWithSharedPtr);
BENCHMARK(BM_SmallObjectManagementWithSharedPtr_Pooled);
BENCHMARK(BM_SmallObjectManagementWithAny);
BENCHMARK(BM_SmallObjectManagementWithVariant);
BENCHMARK(BM_LargeObjectManagementWithProxy);
BENCHMARK(BM_LargeObjectManagementWithProxy_Pooled);
BENCHMARK(BM_LargeObjectManagementWithUniquePtr);
BENCHMARK(BM_LargeObjectManagementWithSharedPtr);
BENCHMARK(BM_LargeObjectManagementWithSharedPtr_Pooled);
BENCHMARK(BM_LargeObjectManagementWithAny);
BENCHMARK(BM_LargeObjectManagementWithVariant);

0 comments on commit 91a22bf

Please sign in to comment.