From 26d906b88b324ea953f42acf1b82086cc4ad3642 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Tue, 17 May 2022 13:12:17 -0600 Subject: [PATCH] [perf] Add benchmark-ot --- perf/Makefile.am | 1 + perf/benchmark-ot.cc | 35 +++++++++++++++++++++++++++++++++++ perf/meson.build | 10 ++++++++++ 3 files changed, 46 insertions(+) create mode 100644 perf/benchmark-ot.cc diff --git a/perf/Makefile.am b/perf/Makefile.am index a28a3efdd..1e67b9231 100644 --- a/perf/Makefile.am +++ b/perf/Makefile.am @@ -8,6 +8,7 @@ EXTRA_DIST += \ meson.build \ benchmark-font.cc \ benchmark-map.cc \ + benchmark-ot.cc \ benchmark-set.cc \ benchmark-shape.cc \ benchmark-subset.cc \ diff --git a/perf/benchmark-ot.cc b/perf/benchmark-ot.cc new file mode 100644 index 000000000..88d443ccb --- /dev/null +++ b/perf/benchmark-ot.cc @@ -0,0 +1,35 @@ +/* + * Benchmarks for hb_set_t operations. + */ +#include "benchmark/benchmark.h" + +#include "hb-ot.h" + +static void BM_hb_ot_tags_from_script_and_language (benchmark::State& state, + hb_script_t script, + const char *language_str) { + + hb_language_t language = hb_language_from_string (language_str, -1); + + hb_tag_t script_tags[HB_OT_MAX_TAGS_PER_SCRIPT]; + unsigned script_count = HB_OT_MAX_TAGS_PER_SCRIPT; + + hb_tag_t language_tags[HB_OT_MAX_TAGS_PER_LANGUAGE]; + unsigned language_count = HB_OT_MAX_TAGS_PER_LANGUAGE; + + for (auto _ : state) { + hb_ot_tags_from_script_and_language (script, + language, + &script_count /* IN/OUT */, + script_tags /* OUT */, + &language_count /* IN/OUT */, + language_tags /* OUT */); + } +} +BENCHMARK_CAPTURE (BM_hb_ot_tags_from_script_and_language, COMMON zh_CN, HB_SCRIPT_COMMON, "zh_CN"); +BENCHMARK_CAPTURE (BM_hb_ot_tags_from_script_and_language, COMMON en_US, HB_SCRIPT_COMMON, "en_US"); +BENCHMARK_CAPTURE (BM_hb_ot_tags_from_script_and_language, LATIN en_US, HB_SCRIPT_LATIN, "en_US"); +BENCHMARK_CAPTURE (BM_hb_ot_tags_from_script_and_language, COMMON none, HB_SCRIPT_LATIN, nullptr); +BENCHMARK_CAPTURE (BM_hb_ot_tags_from_script_and_language, LATIN none, HB_SCRIPT_LATIN, nullptr); + +BENCHMARK_MAIN(); diff --git a/perf/meson.build b/perf/meson.build index 93d7b4d7c..f2f181a2a 100644 --- a/perf/meson.build +++ b/perf/meson.build @@ -21,6 +21,16 @@ benchmark('benchmark-map', executable('benchmark-map', 'benchmark-map.cc', install: false, ), workdir: meson.current_source_dir() / '..', timeout: 100) +benchmark('benchmark-ot', executable('benchmark-ot', 'benchmark-ot.cc', + dependencies: [ + google_benchmark_dep, + ], + cpp_args: [], + include_directories: [incconfig, incsrc], + link_with: [libharfbuzz], + install: false, +), workdir: meson.current_source_dir() / '..', timeout: 100) + benchmark('benchmark-set', executable('benchmark-set', 'benchmark-set.cc', dependencies: [ google_benchmark_dep,