Log

Author Commit Date CI Message
Garret Rieger b32ca2a2 2022-05-19T20:45:39 [subset-perf] remove sort_kahn from repacker. Without an optimized FIFO queue implementation it's nearly as slow as the now optimized sort_shortest_distance.
Behdad Esfahbod 4266cf3b 2022-05-19T18:15:46 [array] Specialize operator== for bytes_t and ubytes_t
Behdad Esfahbod 6eaa22e9 2022-05-19T18:00:58 [serialize] Reduce link_t size from 16 to 12
Behdad Esfahbod 30ba9a39 2022-05-19T17:34:58 [vector] Add emplacing push implementation
Behdad Esfahbod 25393288 2022-05-19T17:19:21 [test] Fix compiler warning
Garret Rieger 73b8360d 2022-05-19T22:59:51 [subset] fix fuzzer found underflow when heap push fails. Fixes https://oss-fuzz.com/testcase-detail/5148625505746944.
Behdad Esfahbod f1bf14ea 2022-05-19T16:42:35 Revert "[set] Cache hash value" This reverts commit 44952bcc259a906b8875ed62dc40de96ade8b95c. While we investivate https://github.com/harfbuzz/harfbuzz/issues/3599
Behdad Esfahbod b4d1ec31 2022-05-19T16:06:21 [algs] Declare coerce() as constexpr
Behdad Esfahbod 2fdb7616 2022-05-19T16:00:43 [map Further adjust hash function
Behdad Esfahbod 01fc90b6 2022-05-19T16:00:06 [map] Adjust hash function
Behdad Esfahbod a47b0aeb 2022-05-19T15:52:00 [vector] Fix remove() implementation test-vector under valgrind happy now.
Behdad Esfahbod 3bd755c3 2022-05-19T15:51:18 [test-vector] Test remove() Currently buggy. Valgrind confirms.
Behdad Esfahbod 58f848da 2022-05-19T15:42:54 [set/map] Adjust hash function return type
Behdad Esfahbod 679b900e 2022-05-19T15:27:32 [meta] Fix gcc4 trait implementation
Behdad Esfahbod fb77f48f 2022-05-19T15:02:10 [vector] Optimize vector copy
Behdad Esfahbod 28b44ac4 2022-05-19T15:01:56 [set] Switch set copy to vector operator = Slows it down currently.
Behdad Esfahbod 37d3275d 2022-05-19T15:01:23 [test-vector] Enable disabled test This seems to work already.
Behdad Esfahbod 544ffb91 2022-05-19T14:50:12 [set] Adjust grow_vector condition
Behdad Esfahbod 0623aa59 2022-05-19T14:12:42 [benchmark-set] Add benchmark for set copy
Behdad Esfahbod 6544fc28 2022-05-19T15:28:09 [vector] Add further copy implementation
Behdad Esfahbod c19f1169 2022-05-19T15:27:52 [meta] Remove non-existing gcc4 trait implementation
Behdad Esfahbod 44952bcc 2022-05-19T14:02:48 [set] Cache hash value
Behdad Esfahbod 844ac328 2022-05-19T13:54:31 [set] Fix hb_set_t hash stability
Behdad Esfahbod 2d0b1248 2022-05-19T13:53:53 [test-map] Test hb_set_t hash stability Fails currently.
Behdad Esfahbod 561e02fe 2022-05-19T13:38:52 [map] Make hb_map_t hashable
Behdad Esfahbod ad176990 2022-05-19T13:36:12 [map] Add is_equal() / towards making hb_map_t hashable New API: + hb_map_is_equal()
Behdad Esfahbod 14a24d8e 2022-05-19T13:03:50 [vector] Make hb_vector_t hashable
Behdad Esfahbod 124f9aeb 2022-05-19T12:58:02 [set] Make hb_set_t hashable
Garret Rieger 3ab2c793 2022-05-19T17:23:36 [subset-perf] Signficiantly speed up ClassDef*::subset. Eliminates the usage of a glyph -> klass hash map and replaces it with a vector storing the mapping. This allows us to use the vector directly as the iterator driving the serialize. Approximately 1% speedup for Noto Nastaliq.
David Corbett e3e685e5 2022-05-18T15:05:55 [ot-tags] Fix `min_subtag_len` calculations
Garret Rieger 13ace77f 2022-05-18T22:38:43 [subset-perf] Use glyph_map instead of set in ClassDefFormat.
Garret Rieger adae2f22 2022-05-18T21:42:28 [subset-perf] Cache a glyph map for gsub. This allows us in some cases to avoid using glyph_set_gsub as a filter.
Garret Rieger 0b1c2ff9 2022-05-18T23:32:03 [subset-perf] Remove extra map lookup in ClassDef subset methods.
Behdad Esfahbod 202e6c46 2022-05-18T17:12:43 [subset] Remove unnecessary test
Behdad Esfahbod cedf7396 2022-05-18T16:52:35 Add some commented-out code
Behdad Esfahbod 6b62c10f 2022-05-18T16:27:54 [priority-queue] Remove old init/fini
Behdad Esfahbod bff8248a 2022-05-18T16:25:03 [repacker] Pre-alloc vertices
Behdad Esfahbod 39a424ca 2022-05-18T16:17:16 [priority-queue] Optimize heap access
Behdad Esfahbod 9308659f 2022-05-18T16:14:25 [priority-queue] Optimize swap()
Behdad Esfahbod c7317ef7 2022-05-18T16:03:41 [repacker] Avoid destroying and recreating objects
Behdad Esfahbod 864e09a0 2022-05-18T15:59:29 [repacker] Reuse allocated vector
Behdad Esfahbod ca77f164 2022-05-18T15:55:49 [repacker] Remove unnecessary vector .fini() calls
Behdad Esfahbod 4cfc2d66 2022-05-18T15:32:19 [subset] Use a std::move on set_t when feasible
Behdad Esfahbod 1f578b5a 2022-05-18T15:24:40 [set] Add pre-allocation internal API
Garret Rieger 48dfbd54 2022-05-18T21:03:56 [subset] minor cleanup.
Garret Rieger 482c6e5d 2022-05-18T19:58:55 [subset-perf] Speed up Coverage::serialize by caching iterator.
Behdad Esfahbod 14b18725 2022-05-18T15:14:32 In Coverage::iter_t, assume iterators are from same Coverage object No need to support otherwise.
Behdad Esfahbod 27141735 2022-05-18T15:12:49 [subset] Add Coverage::__end__ implementation
Behdad Esfahbod c476f58a 2022-05-18T14:20:23 [subset] Write CoverageFormat2::intersects_coverage() as bsearch()
Behdad Esfahbod 63c66951 2022-05-18T13:53:52 [ot-layout] Cosmetic The implementation of HBUINT16 operator == is slower than just comparing to ints.
Behdad Esfahbod 777debd7 2022-05-18T13:46:06 [subset] Rewrite CoverageFormat2::intersects as dagger
Behdad Esfahbod cf5001fa 2022-05-18T13:38:29 [subset] Optimize CoverageFormat2::intersected_coverage_glyphs
Behdad Esfahbod 6f37c207 2022-05-18T13:25:42 [subset] Minor rewrite in CoverageFormat2::serialize()
Behdad Esfahbod e91863b7 2022-05-18T12:39:55 [subset-cff] Pre-size map in subr_remap_t::create()
Behdad Esfahbod ce604621 2022-05-18T12:34:27 [subset-plan] Pre-size maps in _create_old_gid_to_new_gid_map()
Behdad Esfahbod f82ee17a 2022-05-18T12:17:43 [map] Pre-size map in constructor if we can
Behdad Esfahbod b5aa8a27 2022-05-18T11:58:58 [subset-cff] Cosmetic
Behdad Esfahbod 0b201623 2022-05-18T11:58:22 [subset-cff] Fix previous commit Oops!
Behdad Esfahbod 47923092 2022-05-18T11:54:08 [subset-cff] Access vector directly
Behdad Esfahbod 7c86f2e7 2022-05-18T11:45:27 [subset-cff] Pre-alloc out buffer
Behdad Esfahbod 0761e7cd 2022-05-18T11:37:57 [subset-cff] Avoid resetting buffer as encoder does
Behdad Esfahbod 71aa10a3 2022-05-18T11:37:24 [subset-cff] Manually grow vector to avoid memset overhead
Behdad Esfahbod f455cc53 2022-05-18T11:31:55 [subset-cff] Reuse buffer allocation
Behdad Esfahbod 3e4ab2ad 2022-05-18T11:16:46 [perf/benchmark-ot] Add zh-hans
Behdad Esfahbod 6e668a2a 2022-05-18T11:16:11 [perf/benchmark-ot] Rename test
Behdad Esfahbod e24797ae 2022-05-18T11:10:10 [ot-tags] Follow-up to previous commit Part of https://github.com/harfbuzz/harfbuzz/issues/3591
Behdad Esfahbod f5d619be 2022-05-18T11:04:52 [ot-tags] Further gate the slow complex case, and add more tests 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
Behdad Esfahbod 9c64bda2 2022-05-17T17:31:18 [ot-tag] Whitespace
Behdad Esfahbod 3df8017e 2022-05-17T17:29:39 [ot-tag] Optimize subtag_matches() more
Behdad Esfahbod b231fc2d 2022-05-17T17:02:48 [perf/benchmark-ot] Add a couple more test cases
Behdad Esfahbod 3524b14f 2022-05-17T17:02:48 [perf/benchmark-ot] Add a couple more test cases
Behdad Esfahbod 7f6e8c55 2022-05-17T16:58:35 [ot-tags] Optimize subtag_matches() further Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Comparing before to after Benchmark Time CPU Time Old Time New CPU Old CPU New ---------------------------------------------------------------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY -0.3371 -0.3371 71 47 71 47
Behdad Esfahbod 27c11405 2022-05-17T16:51:51 [ot-tag] Optimize subtag_matches Part of https://github.com/harfbuzz/harfbuzz/issues/3591
Behdad Esfahbod a07d8185 2022-05-17T16:46:10 [ot-tag] Add a likely() to the cache hit case
Behdad Esfahbod 0ff5d36c 2022-05-17T16:34:52 [perf/benchmark-ot] Fix benchmark Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Ouch! These are the current numbers: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 78.0 ns 77.7 ns 8917912 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 44.9 ns 44.8 ns 15475318 BM_hb_ot_tags_from_script_and_language/COMMON en_US 17.6 ns 17.5 ns 39812340 BM_hb_ot_tags_from_script_and_language/LATIN en_US 18.2 ns 18.1 ns 38356204 BM_hb_ot_tags_from_script_and_language/COMMON none 4.76 ns 4.74 ns 148746131 BM_hb_ot_tags_from_script_and_language/LATIN none 4.73 ns 4.71 ns 148421349
Behdad Esfahbod dfca47f4 2022-05-17T16:21:02 [ot-tag] Cache last bsearch result Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Humm. Looks like not all of the fat is bsearch overhead now. I cached the last bsearch result, but most of the time is still there. I'm baffled. Before: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.08 ns 8.05 ns 84500482 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 42.2 ns 42.1 ns 16722006 BM_hb_ot_tags_from_script_and_language/COMMON en_US 16.1 ns 16.0 ns 43461527 BM_hb_ot_tags_from_script_and_language/LATIN en_US 16.5 ns 16.5 ns 42448505 BM_hb_ot_tags_from_script_and_language/COMMON none 4.34 ns 4.33 ns 161290530 BM_hb_ot_tags_from_script_and_language/LATIN none 4.34 ns 4.33 ns 162339799 After: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.13 ns 8.11 ns 80438134 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 40.0 ns 39.9 ns 17487939 BM_hb_ot_tags_from_script_and_language/COMMON en_US 12.7 ns 12.7 ns 55124394 BM_hb_ot_tags_from_script_and_language/LATIN en_US 13.1 ns 13.0 ns 53660125 BM_hb_ot_tags_from_script_and_language/COMMON none 4.61 ns 4.60 ns 151394104 BM_hb_ot_tags_from_script_and_language/LATIN none 4.70 ns 4.68 ns 150402847
Behdad Esfahbod 909f00ac 2022-05-17T15:51:41 [ot-tags] Further speed up language bsearch() Using an integer tag to bsearch, instead of string. Part of: https://github.com/harfbuzz/harfbuzz/issues/3591 Before: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.11 ns 8.08 ns 87067795 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 53.6 ns 53.5 ns 13042418 BM_hb_ot_tags_from_script_and_language/COMMON en_US 24.2 ns 24.1 ns 29052731 BM_hb_ot_tags_from_script_and_language/LATIN en_US 24.4 ns 24.3 ns 28736769 BM_hb_ot_tags_from_script_and_language/COMMON none 4.43 ns 4.41 ns 160370413 BM_hb_ot_tags_from_script_and_language/LATIN none 4.35 ns 4.34 ns 160578191 After: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 7.97 ns 7.95 ns 85208363 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 41.7 ns 41.6 ns 16945817 BM_hb_ot_tags_from_script_and_language/COMMON en_US 16.1 ns 16.0 ns 43613523 BM_hb_ot_tags_from_script_and_language/LATIN en_US 16.5 ns 16.4 ns 42568107 BM_hb_ot_tags_from_script_and_language/COMMON none 4.30 ns 4.29 ns 164055469 BM_hb_ot_tags_from_script_and_language/LATIN none 4.29 ns 4.27 ns 163793591
Behdad Esfahbod c460cf74 2022-05-17T15:30:11 [ot-tags] Cosmetic
Behdad Esfahbod 1c8226ed 2022-05-17T15:28:50 Fix compiler warning On Mac compiler: FAILED: src/libharfbuzz.0.dylib.p/hb-ot-tag.cc.o c++ -Isrc/libharfbuzz.0.dylib.p -Isrc -I../src -I. -I.. -I/usr/local/opt/freetype/include/freetype2 -I/usr/local/Cellar/graphite2/1.3.14/include -I/usr/local/Cellar/glib/2.72.1/include/glib-2.0 -I/usr/local/Cellar/glib/2.72.1/lib/glib-2.0/include -I/usr/local/opt/gettext/include -I/usr/local/Cellar/pcre/8.45/include -Xclang -fcolor-diagnostics --coverage -pipe -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++11 -fno-rtti -O2 -g -fno-exceptions -fno-rtti -fno-threadsafe-statics -fvisibility-inlines-hidden -DHAVE_CONFIG_H -Wno-non-virtual-dtor -MD -MQ src/libharfbuzz.0.dylib.p/hb-ot-tag.cc.o -MF src/libharfbuzz.0.dylib.p/hb-ot-tag.cc.o.d -o src/libharfbuzz.0.dylib.p/hb-ot-tag.cc.o -c ../src/hb-ot-tag.cc In file included from ../src/hb-ot-tag.cc:29: In file included from ../src/hb.hh:481: ../src/hb-array.hh:359:14: error: missing default argument on parameter 'ds' Ts... ds) const ^ ../src/hb-ot-tag.cc:292:58: note: in instantiation of function template specialization 'hb_sorted_array_t<const LangTag>::bfind<const char *, unsigned int>' requested here if (hb_sorted_array (ot_languages, ot_languages_len).bfind (lang_str, &tag_idx, ^ 1 error generated.
Behdad Esfahbod c1f4b57c 2022-05-17T15:19:40 [ot-tags] Optimize language comparison Now that we know both strings are of equal len of 2 or 3, optimize. Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Before: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.50 ns 8.47 ns 81221549 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 79.6 ns 79.3 ns 8785804 BM_hb_ot_tags_from_script_and_language/COMMON en_US 40.0 ns 39.9 ns 17462768 BM_hb_ot_tags_from_script_and_language/LATIN en_US 39.2 ns 39.1 ns 17886793 BM_hb_ot_tags_from_script_and_language/COMMON none 4.31 ns 4.30 ns 162805417 BM_hb_ot_tags_from_script_and_language/LATIN none 4.32 ns 4.31 ns 162656688 After: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.27 ns 8.24 ns 81868701 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 56.1 ns 56.0 ns 12353284 BM_hb_ot_tags_from_script_and_language/COMMON en_US 24.3 ns 24.2 ns 28955030 BM_hb_ot_tags_from_script_and_language/LATIN en_US 24.5 ns 24.4 ns 28664868 BM_hb_ot_tags_from_script_and_language/COMMON none 4.35 ns 4.34 ns 161190014 BM_hb_ot_tags_from_script_and_language/LATIN none 4.36 ns 4.34 ns 161319000
Behdad Esfahbod dde48d78 2022-05-17T15:07:49 Fix compiler warning
Behdad Esfahbod 15be0ded 2022-05-17T14:57:08 [ot-tags] Optimize lang_matches() Part of https://github.com/harfbuzz/harfbuzz/issues/3591 Before: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.67 ns 8.64 ns 80324382 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 91.2 ns 90.9 ns 7674131 BM_hb_ot_tags_from_script_and_language/COMMON en_US 41.1 ns 41.0 ns 17174093 BM_hb_ot_tags_from_script_and_language/LATIN en_US 41.3 ns 41.2 ns 17000876 BM_hb_ot_tags_from_script_and_language/COMMON none 4.56 ns 4.55 ns 153914130 BM_hb_ot_tags_from_script_and_language/LATIN none 4.53 ns 4.52 ns 153830303 After: ------------------------------------------------------------------------------------------------ Benchmark Time CPU Iterations ------------------------------------------------------------------------------------------------ BM_hb_ot_tags_from_script_and_language/COMMON abcd_XY 8.24 ns 8.21 ns 84078465 BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 77.5 ns 77.2 ns 9059230 BM_hb_ot_tags_from_script_and_language/COMMON en_US 38.8 ns 38.7 ns 17790692 BM_hb_ot_tags_from_script_and_language/LATIN en_US 37.6 ns 37.5 ns 18648293 BM_hb_ot_tags_from_script_and_language/COMMON none 4.50 ns 4.49 ns 155573267 BM_hb_ot_tags_from_script_and_language/LATIN none 4.49 ns 4.47 ns 156456653
Behdad Esfahbod 407a135b 2022-05-17T14:45:45 [perf/benchmark-ot] Add one more test
Behdad Esfahbod dd3c858f 2022-05-17T14:28:28 [ot-tags] Speed up hb_ot_tags_from_language() Part of https://github.com/harfbuzz/harfbuzz/issues/3591 "After that, bulk of the time I suppose is spent in binary-searching the language table. I suggest we split the language table in 2-letter and 3-letter tags, to speed-up the vast majority of cases that are 2-letter." benchmark-ot, before: ---------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 112 ns 111 ns 6286271 BM_hb_ot_tags_from_script_and_language/COMMON en_US 60.6 ns 60.4 ns 11671176 BM_hb_ot_tags_from_script_and_language/LATIN en_US 61.3 ns 61.1 ns 11442645 BM_hb_ot_tags_from_script_and_language/COMMON none 4.75 ns 4.74 ns 146997235 BM_hb_ot_tags_from_script_and_language/LATIN none 4.65 ns 4.64 ns 150938747 After: ---------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 89.5 ns 89.2 ns 7747649 BM_hb_ot_tags_from_script_and_language/COMMON en_US 38.5 ns 38.4 ns 18199432 BM_hb_ot_tags_from_script_and_language/LATIN en_US 39.0 ns 38.9 ns 18049238 BM_hb_ot_tags_from_script_and_language/COMMON none 4.53 ns 4.52 ns 154895110 BM_hb_ot_tags_from_script_and_language/LATIN none 4.54 ns 4.52 ns 154762105
Behdad Esfahbod 9baccb98 2022-05-17T13:34:34 [ot-tags] Speed up hb_ot_tags_from_complex_language() Part of https://github.com/harfbuzz/harfbuzz/issues/3591 2. All the subtag_matches outside the switch match long strings (>= 6 or so). As such, check the tag for such length before going into any of them. benchmark-ot, before: ---------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 172 ns 171 ns 4083155 BM_hb_ot_tags_from_script_and_language/COMMON en_US 120 ns 119 ns 5849947 BM_hb_ot_tags_from_script_and_language/LATIN en_US 113 ns 112 ns 5840326 BM_hb_ot_tags_from_script_and_language/COMMON none 4.66 ns 4.64 ns 151396224 BM_hb_ot_tags_from_script_and_language/LATIN none 4.66 ns 4.64 ns 149019593 After: ---------------------------------------------------------------------------------------------- Benchmark Time CPU Iterations ---------------------------------------------------------------------------------------------- BM_hb_ot_tags_from_script_and_language/COMMON zh_CN 112 ns 112 ns 6357763 BM_hb_ot_tags_from_script_and_language/COMMON en_US 60.5 ns 60.3 ns 11475091 BM_hb_ot_tags_from_script_and_language/LATIN en_US 54.9 ns 54.8 ns 12575690 BM_hb_ot_tags_from_script_and_language/COMMON none 4.61 ns 4.59 ns 152388450 BM_hb_ot_tags_from_script_and_language/LATIN none 4.66 ns 4.64 ns 151497600
Behdad Esfahbod 26d906b8 2022-05-17T13:12:17 [perf] Add benchmark-ot
Behdad Esfahbod 629fa8ee 2022-05-16T17:44:50 [perf/benchmark-font] Test Roboto as variable even though it's not
Behdad Esfahbod 71a0cda8 2022-05-16T17:43:48 [perf/benchmark-font] Only certain fonts are variable Don't test every font as variable.
Behdad Esfahbod fb413f52 2022-05-16T17:08:43 [subset/cff] Don't use bitfields for hot bools The struct has room because of alignment, and these bools are hot.
Behdad Esfahbod a4d98b63 2022-05-16T17:02:40 [subset/cff1] Collect glyph-to-sid map to avoid an O(n^2) algorithm Saves 13 for largest benchmark: BM_subset/subset_glyphs/SourceHanSans-Regular_subset.otf/10000 -0.1313 -0.1308 75 65 75 65 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/4096 -0.1009 -0.1004 54 48 54 48 BM_subset/subset_codepoints/SourceHanSans-Regular_subset.otf/10000 -0.1067 -0.1066 70 62 69 62
Behdad Esfahbod b87f48e9 2022-05-16T16:33:31 [cff1] get_sid() move bounds check into each implementation
Behdad Esfahbod e1e359b4 2022-05-16T15:53:28 [cff1] Tighten up range_list_t a bit
Behdad Esfahbod 3fbac094 2022-05-16T15:41:11 [cff1] Lazy-load & sort glyph names Improves subset benchmarks by up to 70% for small CFF1 subset of non-CID fonts! BM_subset/subset_glyphs/SourceSansPro-Regular.otf/10 -0.7067 -0.7071 1 0 1 0 BM_subset/subset_glyphs/SourceSansPro-Regular.otf/64 -0.4817 -0.4824 1 0 1 0 BM_subset/subset_glyphs/SourceSansPro-Regular.otf/512 -0.1948 -0.1956 2 2 2 2 BM_subset/subset_glyphs/SourceSansPro-Regular.otf/2000 -0.0767 -0.0761 6 6 6 6
Behdad Esfahbod b58bfd98 2022-05-16T11:21:45 [font] Minor move of code to silence gcc-12 warning See mailing list discussion.
Behdad Esfahbod 602e0ca7 2022-05-16T10:14:34 [cff] Minor restructure of struct Surprisingly this shows tiny benchmark improvement consistently.
Behdad Esfahbod acdab17e 2022-05-13T14:14:36 [cff] Cosmetic in parsed_values_t
Behdad Esfahbod b46c7faa 2022-05-13T14:02:54 [cff] Check buf_len, not buf Ouch!
Garret Rieger 19a8db85 2022-05-13T18:05:05 [subset] fix potential integer overflow in gname_t::cmp.
Behdad Esfahbod 2d2f66e1 2022-05-13T13:53:17 [cff-common] In INDEX, return empty bytes if length is zero Before it was possible to return non-null arrayZ.
Behdad Esfahbod a2f132f1 2022-05-13T13:49:17 [cff] Check glyph-name's length, not arrayZ As the latter can be non-null while still zero-length.