Use perfect hash for NFC and NFKC Unicode Normalization quick check
authorMichael Paquier <michael@paquier.xyz>
Sun, 11 Oct 2020 10:09:01 +0000 (19:09 +0900)
committerMichael Paquier <michael@paquier.xyz>
Sun, 11 Oct 2020 10:09:01 +0000 (19:09 +0900)
commit80f8eb79e24d9b7963eaf17ce846667e2c6b6e6f
treec5ac3c2938b9fd81f8319a44429817454375ce1d
parent85d08b8b721fb3b9359bca9325bc425cc95c30b1
Use perfect hash for NFC and NFKC Unicode Normalization quick check

This makes the normalization quick check about 30% faster for NFC and
50% faster for NFKC than the binary search used previously.  The hash
lookup reuses the existing array of bit fields used for the binary
search to get the quick check property and is generated as part of "make
update-unicode" in src/common/unicode/.

Author: John Naylor
Reviewed-by: Mark Dilger, Michael Paquier
Discussion: https://postgr.es/m/CACPNZCt4fbJ0_bGrN5QPt34N4whv=mszM0LMVQdoa2rC9UMRXA@mail.gmail.com
src/common/unicode/generate-unicode_normprops_table.pl
src/common/unicode_norm.c
src/include/common/unicode_normprops_table.h
src/tools/pgindent/exclude_file_patterns
src/tools/pgindent/typedefs.list