mirror of
https://github.com/SerenityOS/serenity.git
synced 2025-01-26 19:32:06 -05:00
0652cc48c0
We currently produce a single table for all categories of code point properties (GeneralCategory, Script, etc.). Each row contains a field indicating the range of code points to which that property applies. At runtime, we then do a binary search through that table to decide if a code point has a property. This changes our approach to generate a 2-stage lookup table for each of those categories. There is an in-depth explanation of these tables above the new `create_code_point_tables` method. The end effect is that code point property lookup is reduced from a binary search to constant-time array lookups. In total, this change: * Increases the size of libunicode.so from 2.7 MB to 2.9 MB. * Reduces the runtime of the new benchmark test case added here from 3.576s to 1.020s (a 3.5x speedup). * In a profile of resizing a TextEditor window with a 3MB file open, the runtime of checking if a code point has a word break property reduces from ~81% to ~56%. |
||
---|---|---|
.. | ||
Azure | ||
CMake | ||
gn | ||
HeaderCheck | ||
Lagom | ||
Screenshots | ||
ShellCompletions/zsh | ||
Websites | ||
analyze-qemu-coverage.sh | ||
bochsrc | ||
build-image-extlinux.sh | ||
build-image-grub.sh | ||
build-image-limine.sh | ||
build-image-qemu.sh | ||
build-manpages-website.sh | ||
build-native-partition.sh | ||
build-root-filesystem.sh | ||
check-ak-test-files.sh | ||
check-debug-flags.sh | ||
check-emoji.py | ||
check-markdown.sh | ||
check-newlines-at-eof.py | ||
check-png-sizes.sh | ||
check-style.py | ||
check-symbols.sh | ||
convert-markdown-links.lua | ||
debug-kernel.sh | ||
export-argsparser-manpages.sh | ||
extlinux.conf | ||
generate-embedded-resource-assembly.sh | ||
generate-libwasm-spec-test.py | ||
generate-libwasm-spec-test.sh | ||
grub-ebr.cfg | ||
grub-gpt.cfg | ||
grub-mbr.cfg | ||
install-ports-tree.sh | ||
label-pull-requests.js | ||
limine.cfg | ||
lint-ci.sh | ||
lint-clang-format.sh | ||
lint-commit.sh | ||
lint-executable-resources.sh | ||
lint-gml-format.sh | ||
lint-gn.sh | ||
lint-keymaps.py | ||
lint-ports.py | ||
lint-prettier.sh | ||
lint-python.sh | ||
lint-shell-scripts.sh | ||
new-project.sh | ||
refresh-serenity-qtcreator.sh | ||
run.sh | ||
serenity.sh | ||
serenity_gdb.py | ||
shell_include.sh | ||
text-to-cpp-string.sh | ||
toot-commits.js | ||
tweet-commits.js |