DuckDB 拥有一个广泛的基准测试套件。 当进行可能影响性能的更改时,运行这些基准测试以检测潜在的性能回归是非常重要的。
Getting Started
要构建基准测试套件,请在DuckDB 仓库中运行以下命令:
BUILD_BENCHMARK=1 CORE_EXTENSIONS='tpch' make
Listing Benchmarks
要列出所有可用的基准测试,请运行:
build/release/benchmark/benchmark_runner --list
运行基准测试
运行单个基准测试
要运行单个基准测试,请发出以下命令:
build/release/benchmark/benchmark_runner benchmark/micro/nulls/no_nulls_addition.benchmark
输出将以CSV格式打印到stdout
,格式如下:
name run timing
benchmark/micro/nulls/no_nulls_addition.benchmark 1 0.121234
benchmark/micro/nulls/no_nulls_addition.benchmark 2 0.121702
benchmark/micro/nulls/no_nulls_addition.benchmark 3 0.122948
benchmark/micro/nulls/no_nulls_addition.benchmark 4 0.122534
benchmark/micro/nulls/no_nulls_addition.benchmark 5 0.124102
你也可以使用--out
标志指定一个输出文件。这将只将时间(由换行符分隔)写入该文件。
build/release/benchmark/benchmark_runner benchmark/micro/nulls/no_nulls_addition.benchmark --out=timings.out
输出将包含以下内容:
0.182472
0.185027
0.184163
0.185281
0.182948
使用正则表达式运行多个基准测试
你也可以使用正则表达式来指定要运行的基准测试。
请注意某些正则表达式字符的shell扩展(例如,*
可能会被你的shell扩展,因此需要适当的引用或转义)。
build/release/benchmark/benchmark_runner "benchmark/micro/nulls/.*"
运行所有基准测试
不指定任何参数将运行所有基准测试。
build/release/benchmark/benchmark_runner
其他选项
--info
标志为您提供了一些关于基准测试的其他信息。
build/release/benchmark/benchmark_runner benchmark/micro/nulls/no_nulls_addition.benchmark --info
display_name:NULL Addition (no nulls)
group:micro
subgroup:nulls
--query
标志将打印由基准测试运行的查询。
SELECT min(i + 1) FROM integers;
--profile
标志将输出查询树。