diff options
| author | Mattias EngdegÄrd | 2024-02-13 14:52:39 +0100 |
|---|---|---|
| committer | Mattias EngdegÄrd | 2024-02-14 14:29:54 +0100 |
| commit | 3a93e301ddc913758abe05c876aa3016e8b23af8 (patch) | |
| tree | 60e17da4c915a15af930efe1c7fc0bc8532d58fb /java/debug.sh | |
| parent | decfdd4f1a1e3b1539eafdaaf11191e8477f0636 (diff) | |
| download | emacs-3a93e301ddc913758abe05c876aa3016e8b23af8.tar.gz emacs-3a93e301ddc913758abe05c876aa3016e8b23af8.zip | |
String hashing improvements (spread and performance)
Fix gaps in hashing coverage in the middle and end of even fairly short
strings. E.g., `outline-1`, `outline-2` etc all hashed to the exact
same value but with the patch, there are no collisions among the ~160000
symbols in the Emacs tree.
This change also improves average hashing speed by using fewer mixing
operations.
* src/fns.c (hash_string):
Use unit stride for fairly short strings, while retaining the cap of 8
samples for long ones.
Always hash the last word to ensure that the end of the string is
covered. For strings shorter than a word, use fewer loads and a single
reduction step.
Diffstat (limited to 'java/debug.sh')
0 files changed, 0 insertions, 0 deletions