f5d619be79
Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Still 'zh-trad' is the slowest case. -------------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations -------------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_trad 136 ns 136 ns 5107838 BM_hb_ot_tags_from_script_and_language/COMMON ab_abcd 115 ns 115 ns 6103104 BM_hb_ot_tags_from_script_and_language/COMMON ab_abc 25.4 ns 25.3 ns 27674482 BM_hb_ot_tags_from_script_and_language/COMMON abcdef_XY 20.2 ns 20.1 ns 34795719 BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 19.4 ns 19.3 ns 36390401 BM_hb_ot_tags_from_script_and_language/COMMON cxy_CN 33.5 ns 33.4 ns 20998939 BM_hb_ot_tags_from_script_and_language/COMMON exy_CN 25.1 ns 25.0 ns 27705832 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 34.2 ns 34.1 ns 20564356 BM_hb_ot_tags_from_script_and_language/COMMON en_US 15.5 ns 15.5 ns 45032204 BM_hb_ot_tags_from_script_and_language/LATIN en_US 15.9 ns 15.8 ns 44412379 BM_hb_ot_tags_from_script_and_language/COMMON none 4.72 ns 4.71 ns 149101665 BM_hb_ot_tags_from_script_and_language/LATIN none 4.72 ns 4.70 ns 149254498 |
||
---|---|---|
.. | ||
fonts | ||
texts | ||
Makefile.am | ||
README.md | ||
benchmark-font.cc | ||
benchmark-map.cc | ||
benchmark-ot.cc | ||
benchmark-set.cc | ||
benchmark-shape.cc | ||
benchmark-subset.cc | ||
meson.build | ||
run.sh |
README.md
Building and Running
Benchmarks are implemented using Google Benchmark.
To build the benchmarks in this directory you need to set the benchmark option while configuring the build with meson:
meson configure build -Dbenchmark=enabled --buildtype=release
Then build the benchmark binaries with ninja:
ninja -Cbuild perf/benchmark-set
Finally, to run one of the benchmarks:
./build/perf/benchmark-set
It's possible to filter the benchmarks being run and customize the output via flags to the benchmark binary. See the Google Benchmark User Guide for more details.
Profiling
Configure the build to include debug information for profiling:
CXXFLAGS="-fno-omit-frame-pointer" meson --reconfigure build -Dbenchmark=enabled --buildtype=debug
ninja -Cbuild
Then run the benchmark with perf:
perf record -g -o ~/tmp/profiles/subset.prof ./build/perf/benchmark-subset --benchmark_filter="BM_subset_codepoints/subset_notocjk/100000" --benchmark_repetitions=5
You probably want to filter to a specific benchmark of interest and set the number of repititions high enough to get a good sampling of profile data.
Finally view the profile with:
perf report -i ~/tmp/profiles/subset.prof