Re: Optimization for lower(), upper(), casefold() functions.
От | Alexander Borisov |
---|---|
Тема | Re: Optimization for lower(), upper(), casefold() functions. |
Дата | |
Msg-id | fddf4811-8292-4da0-908b-77524002444c@gmail.com обсуждение исходный текст |
Ответ на | Re: Optimization for lower(), upper(), casefold() functions. (Alexander Borisov <lex.borisov@gmail.com>) |
Список | pgsql-hackers |
12.03.2025 19:55, Alexander Borisov wrote: [...] >> A couple questions: >> >> * Is there a reason the fast-path for codepoints < 0x80 is in >> unicode_case.c rather than unicode_case_func.h? > > Yes, this is an important optimization, below are benchmarks that [...] I forgot to add the benchmark: Benchmark Anatation: Patch v3j_0001: patch v3j_0001 without any changes. Patch v3j_0001 + static: patch v3j_0001 with adding static to casemap(). Patch v3j_0001 + static + fast path: patch v3j_0001 with adding static to casemap() and fast path for codepoint < 0x80. v4_0001: v3j_0001 + static + fast path v4_0001 + v3j_0002: v3j_0002 patch unchanged, but with static for casemap() (inherited from v4_0001 patch) v4_0001 + v4_0002: changed fast path for codepoint < 0x80. Made fast return to avoid unnecessary checks. Without: current version of the code without any patches. All results are in tps. * macOS 15.1 (Apple M3 Pro) (Apple clang version 16.0.0) ASCII: Repeated characters (700kb) in the range from 0x20 to 0x7E. Patch v3j_0001: 201.029609 Patch v3j_0001 + static: 247.155438 Patch v3j_0001 + static + fast path: 267.941047 Patch v4_0001 + v3j_0002: 260.737601 Patch v4_0001 + v4_0002: 268.913658 Without: 260.437508 Cyrillic: Repeated characters (1MB) in the range from 0x0410 to 0x042F. Patch v3j_0001: 48.130350 Patch v3j_0001 + static: 49.365897 Patch v3j_0001 + static + fast path: 48.891842 Patch v4_0001 + v3j_0002: 88.833061 Patch v4_0001 + v4_0002: 88.329603 Without: 47.869687 Unicode: A query consisting of all Unicode characters from 0xA0 to 0x2FA1D (excluding 0xD800..0xDFFF). Patch v3j_0001: 91.333557 Patch v3j_0001 + static: 92.464786 Patch v3j_0001 + static + fast path: 91.359428 Patch v4_0001 + v3j_0002: 103.390609 Patch v4_0001 + v4_0002: 102.819763 Without: 92.279652 Regards, Alexander Borisov
В списке pgsql-hackers по дате отправления: