ladybird/Userland
Timothy Flynn 5aaefe4e62 LibCompress: Use prefix tables to decode Huffman codes up to 8 bits long
Huffman codes have a useful property in that they are prefix codes. That
is, a set of bits representing a Huffman-coded symbol is never a prefix
of another symbol. This allows us to create a table, where each index in
the table are integers whose prefix is the entry's corresponding Huffman
code.

With Deflate, we can have codes up to 16 bits in length, thus creating a
prefix table with 2^16 entries. So instead of creating a table fit all
possible codes, we use a cutoff of 8-bit codes. Codes larger than 8 bits
fall back to the binary search method.

Using the "enwik8" file as a test (100MB uncompressed, commonly used in
benchmarks: https://www.mattmahoney.net/dc/enwik8.zip), decompression
time decreases from 3.527s to 2.585s on Linux.
2023-03-29 07:19:14 +02:00
..
Applets Applets/Keymap: Repaint applet on keymap change 2023-03-09 21:42:23 +01:00
Applications Browser: Add reset zoom level button to toolbar 2023-03-29 07:17:35 +02:00
BuggieBox Everywhere: Use LibFileSystem where trivial 2023-03-21 19:03:21 +00:00
Demos LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
DevTools LibFileSystem: Move TempFile from LibCore to LibFileSystem 2023-03-21 19:03:21 +00:00
DynamicLoader DynamicLoader: Disable stack protector in some files for aarch64 build 2023-02-15 22:53:19 +01:00
Games Everywhere: Use LibFileSystem where trivial 2023-03-21 19:03:21 +00:00
Libraries LibCompress: Use prefix tables to decode Huffman codes up to 8 bits long 2023-03-29 07:19:14 +02:00
Services WebServer: Propagate more errors 2023-03-27 20:29:51 +01:00
Shell Shell: Skip rc files when not running interactively 2023-03-29 03:39:09 +03:30
Utilities headless-browser: Don't print extra newline after layout tree dumps 2023-03-25 19:41:31 +01:00
CMakeLists.txt Userland: Add the BuggieBox program 2022-11-26 12:41:47 -07:00