1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
#include "benchmark_runner.hpp"
#include "compare_result.hpp"
#include "duckdb_benchmark_macro.hpp"
using namespace duckdb;
#define SF 1
#define TPCHStartup(QUERY) \
string db_path = "duckdb_benchmark_db.db"; \
void Load(DuckDBBenchmarkState *state) override { \
DeleteDatabase(db_path); \
{ \
DuckDB db(db_path); \
Connection con(db); \
con.Query("CALL dbgen(sf=" + std::to_string(SF) + ")"); \
} \
{ \
auto config = GetConfig(); \
config->options.checkpoint_wal_size = 0; \
DuckDB db(db_path, config.get()); \
} \
} \
void RunBenchmark(DuckDBBenchmarkState *state) override { \
auto config = GetConfig(); \
DuckDB db(db_path, config.get()); \
Connection con(db); \
state->result = con.Query(QUERY); \
} \
string BenchmarkInfo() override { \
return string("Start a TPC-H SF1 database and run ") + QUERY + string(" in the database"); \
}
#define NormalConfig() \
duckdb::unique_ptr<DBConfig> GetConfig() { \
return make_uniq<DBConfig>(); \
}
DUCKDB_BENCHMARK(TPCHEmptyStartup, "[startup]")
TPCHStartup("SELECT * FROM lineitem WHERE 1=0") NormalConfig() string VerifyResult(QueryResult *result) override {
if (result->HasError()) {
return result->GetError();
}
return string();
}
FINISH_BENCHMARK(TPCHEmptyStartup)
DUCKDB_BENCHMARK(TPCHCount, "[startup]")
TPCHStartup("SELECT COUNT(*) FROM lineitem") NormalConfig() string VerifyResult(QueryResult *result) override {
if (result->HasError()) {
return result->GetError();
}
return string();
}
FINISH_BENCHMARK(TPCHCount)
DUCKDB_BENCHMARK(TPCHSimpleAggr, "[startup]")
TPCHStartup("SELECT SUM(l_extendedprice) FROM lineitem") NormalConfig() string
VerifyResult(QueryResult *result) override {
if (result->HasError()) {
return result->GetError();
}
return string();
}
FINISH_BENCHMARK(TPCHSimpleAggr)
DUCKDB_BENCHMARK(TPCHQ1, "[startup]")
TPCHStartup("PRAGMA tpch(1)") NormalConfig() string VerifyResult(QueryResult *result) override {
if (result->HasError()) {
return result->GetError();
}
return string();
}
FINISH_BENCHMARK(TPCHQ1)
|