Files
email-tracker/external/duckdb/benchmark/include/benchmark_runner.hpp
2025-10-24 19:21:19 -05:00

59 lines
1.5 KiB
C++

//===----------------------------------------------------------------------===//
//
// DuckDB
//
// benchmark_runner.hpp
//
// Author: Mark Raasveldt
//
//===----------------------------------------------------------------------===//
#pragma once
#include "benchmark_configuration.hpp"
#include "benchmark.hpp"
#include "duckdb/common/constants.hpp"
#include "duckdb/common/fstream.hpp"
#include <thread>
namespace duckdb {
class DuckDB;
//! The benchmark runner class is responsible for running benchmarks
class BenchmarkRunner {
BenchmarkRunner();
public:
static constexpr const char *DUCKDB_BENCHMARK_DIRECTORY = "duckdb_benchmark_data";
BenchmarkConfiguration configuration;
static BenchmarkRunner &GetInstance() {
static BenchmarkRunner instance;
return instance;
}
static void InitializeBenchmarkDirectory();
//! Register a benchmark in the Benchmark Runner, this is done automatically
//! as long as the proper macro's are used
static void RegisterBenchmark(Benchmark *benchmark);
void Log(string message);
void LogLine(string message);
void LogResult(string message);
void LogOutput(string message);
void LogSummary(string benchmark, string message, size_t i);
void RunBenchmark(Benchmark *benchmark);
void RunBenchmarks();
vector<Benchmark *> benchmarks;
ofstream out_file;
ofstream log_file;
uint32_t threads = MaxValue<uint32_t>(std::thread::hardware_concurrency(), 1u);
string memory_limit;
unordered_map<string, string> custom_arguments;
};
} // namespace duckdb