serenity/Meta
Timothy Flynn 0652cc48c0 LibUnicode: Perform code point property lookups in constant time
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%.
2023-07-26 08:36:20 +02:00
..
Azure
CMake LibWeb: Generate parsing code for CSS math functions 2023-07-15 10:23:33 +02:00
gn Meta: Port recent LibWeb and LibJS changes to gn build 2023-07-20 06:48:13 +01:00
HeaderCheck
Lagom LibUnicode: Perform code point property lookups in constant time 2023-07-26 08:36:20 +02:00
Screenshots README+Meta: Update the screenshot :^) 2023-07-14 23:40:58 +02:00
ShellCompletions/zsh
Websites
analyze-qemu-coverage.sh
bochsrc
build-image-extlinux.sh Meta: Pass -- to sudo instead of '$SHELL -c' in build scripts 2023-07-16 16:28:18 +01:00
build-image-grub.sh Meta: Pass -- to sudo instead of '$SHELL -c' in build scripts 2023-07-16 16:28:18 +01:00
build-image-limine.sh Meta: Pass -- to sudo instead of '$SHELL -c' in build scripts 2023-07-16 16:28:18 +01:00
build-image-qemu.sh Meta: Pass -- to sudo instead of '$SHELL -c' in build scripts 2023-07-16 16:28:18 +01:00
build-manpages-website.sh
build-native-partition.sh Meta: Pass -- to sudo instead of '$SHELL -c' in build scripts 2023-07-16 16:28:18 +01:00
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 Meta: Add gn linter 2023-07-13 14:07:25 -06:00
lint-clang-format.sh
lint-commit.sh
lint-executable-resources.sh
lint-gml-format.sh
lint-gn.sh Meta: Add gn linter 2023-07-13 14:07:25 -06:00
lint-keymaps.py
lint-ports.py Meta: Dont finish lines with only one character in lint-ports.py 2023-07-18 00:17:34 +02:00
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