Tinker with benchmarks. Looking at render performance
This commit is contained in:
@@ -156,50 +156,6 @@ int main() {
|
||||
[&]() { histogram.observe(2.0); });
|
||||
}
|
||||
|
||||
// Render performance scaling
|
||||
{
|
||||
// Test render performance as number of metrics increases
|
||||
std::vector<metric::Counter> counters;
|
||||
std::vector<metric::Gauge> gauges;
|
||||
std::vector<metric::Histogram> histograms;
|
||||
|
||||
auto counter_family =
|
||||
metric::create_counter("scale_counter", "Scale counter");
|
||||
auto gauge_family = metric::create_gauge("scale_gauge", "Scale gauge");
|
||||
auto histogram_family = metric::create_histogram(
|
||||
"scale_histogram", "Scale histogram",
|
||||
std::initializer_list<double>{0.1, 0.5, 1.0, 2.5, 5.0, 10.0, 25.0,
|
||||
50.0});
|
||||
|
||||
// Create varying numbers of metrics
|
||||
for (int scale : {10, 100, 1000}) {
|
||||
// Clear previous metrics by creating new families
|
||||
// (Note: In real usage, metrics persist for application lifetime)
|
||||
for (int i = 0; i < scale; ++i) {
|
||||
counters.emplace_back(
|
||||
counter_family.create({{"id", std::to_string(i)}}));
|
||||
gauges.emplace_back(gauge_family.create({{"id", std::to_string(i)}}));
|
||||
histograms.emplace_back(
|
||||
histogram_family.create({{"id", std::to_string(i)}}));
|
||||
|
||||
// Set some values
|
||||
counters.back().inc(static_cast<double>(i));
|
||||
gauges.back().set(static_cast<double>(i * 2));
|
||||
histograms.back().observe(static_cast<double>(i) * 0.1);
|
||||
}
|
||||
|
||||
ArenaAllocator arena;
|
||||
std::string bench_name =
|
||||
"render() - " + std::to_string(scale) + " metrics each type";
|
||||
|
||||
bench.run(bench_name, [&]() {
|
||||
auto output = metric::render(arena);
|
||||
ankerl::nanobench::doNotOptimizeAway(output);
|
||||
arena.reset();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// Callback metrics performance
|
||||
{
|
||||
auto counter_family =
|
||||
@@ -245,5 +201,51 @@ int main() {
|
||||
callback_updater.join();
|
||||
}
|
||||
|
||||
// Render performance scaling
|
||||
{
|
||||
bench.unit("metric");
|
||||
// Test render performance as number of metrics increases
|
||||
std::vector<metric::Counter> counters;
|
||||
std::vector<metric::Gauge> gauges;
|
||||
std::vector<metric::Histogram> histograms;
|
||||
|
||||
auto counter_family =
|
||||
metric::create_counter("scale_counter", "Scale counter");
|
||||
auto gauge_family = metric::create_gauge("scale_gauge", "Scale gauge");
|
||||
auto histogram_family = metric::create_histogram(
|
||||
"scale_histogram", "Scale histogram",
|
||||
std::initializer_list<double>{0.1, 0.5, 1.0, 2.5, 5.0, 10.0, 25.0,
|
||||
50.0});
|
||||
|
||||
// Create varying numbers of metrics
|
||||
for (int scale : {10, 100, 1000}) {
|
||||
bench.batch(scale);
|
||||
// Clear previous metrics by creating new families
|
||||
// (Note: In real usage, metrics persist for application lifetime)
|
||||
for (int i = 0; i < scale; ++i) {
|
||||
counters.emplace_back(
|
||||
counter_family.create({{"id", std::to_string(i)}}));
|
||||
gauges.emplace_back(gauge_family.create({{"id", std::to_string(i)}}));
|
||||
histograms.emplace_back(
|
||||
histogram_family.create({{"id", std::to_string(i)}}));
|
||||
|
||||
// Set some values
|
||||
counters.back().inc(static_cast<double>(i));
|
||||
gauges.back().set(static_cast<double>(i * 2));
|
||||
histograms.back().observe(static_cast<double>(i) * 0.1);
|
||||
}
|
||||
|
||||
ArenaAllocator arena;
|
||||
std::string bench_name =
|
||||
"render() - " + std::to_string(scale) + " metrics each type";
|
||||
|
||||
bench.run(bench_name, [&]() {
|
||||
auto output = metric::render(arena);
|
||||
ankerl::nanobench::doNotOptimizeAway(output);
|
||||
arena.reset();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user