Skip to content

Performance

Test Script

Test maximum single-threaded throughput for two minutes.

#include <registry.h>
#include <chrono>
#include <iostream>
#include <iomanip>
#include <unordered_map>
#include <string>


int main()
{
    Logger::info("Starting UDP performance test...");

    //auto r = Registry(Config(WriterConfig(WriterTypes::UDP)));
    auto r = Registry(Config(WriterConfig(WriterTypes::Unix)));

    std::unordered_map<std::string, std::string>  tags = { {"location", "udp"}, {"version", "correct-horse-battery-staple"}};

    // Set maximum duration to 2 minutes
    constexpr int max_duration_seconds = 2 * 60;

    // Track iterations and timing
    unsigned long long iterations = 0;
    auto start_time = std::chrono::steady_clock::now();

    // Helper function to get elapsed time in seconds
    auto elapsed = [&start_time]() -> double {
        auto now = std::chrono::steady_clock::now();
        return std::chrono::duration<double>(now - start_time).count();
    };

    while (true)
    {
        r.CreateCounter("udp_test_counter", tags).Increment();
        iterations++;

        if (iterations % 500000 == 0)
        {
            if (elapsed() > max_duration_seconds)
            {
                break;
            }
        }
    }

    double total_elapsed = elapsed();
    double rate_per_second = iterations / total_elapsed;

    Logger::info("Iterations completed: {}", iterations);
    Logger::info("Total elapsed time: {:.2f} seconds", total_elapsed);
    Logger::info("Rate: {:.2f} iterations/second", rate_per_second);              
    return 0;
}

Results

See Usage > Performance.