postgres.git / summary / log / commit / refs

commit    ba958299eaf3d2f55bddb8efb037091d14ca6fd0
Author:   John Naylor <john.naylor@postgresql.org>
Date:     Thu Aug 12 13:08:56 2021 +0000
First released in: 15.0

    Speed up generation of Unicode hash functions.
    
    Sets of Unicode keys are picky about the primes used when generating
    a perfect hash function for them. Callers can spend many seconds
    iterating through all the possible combinations of candidate
    multipliers and seeds to find one that works.
    
    Unicode updates typically happen only once a year, but it still makes
    development and testing of Unicode scripts unnecessarily slow. To fix,
    iterate over the primes in the innermost loop. This does not change
    any existing functions checked into the tree.


src/tools/PerfectHash.pm | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tools/PerfectHash.pm b/src/tools/PerfectHash.pm index db06d0461c4..ce03ed8bbcb 100644 --- a/src/tools/PerfectHash.pm +++ b/src/tools/PerfectHash.pm @@ -87,13 +87,13 @@ sub generate_hash_function my $hash_seed2; my @subresult; FIND_PARAMS: - foreach (17, 31, 127, 8191) + for ($hash_seed1 = 0; $hash_seed1 < 10; $hash_seed1++) { - $hash_mult2 = $_; # "foreach $hash_mult2" doesn't work - for ($hash_seed1 = 0; $hash_seed1 < 10; $hash_seed1++) + for ($hash_seed2 = 0; $hash_seed2 < 10; $hash_seed2++) { - for ($hash_seed2 = 0; $hash_seed2 < 10; $hash_seed2++) + foreach (17, 31, 127, 8191) { + $hash_mult2 = $_; # "foreach $hash_mult2" doesn't work @subresult = _construct_hash_table( $keys_ref, $hash_mult1, $hash_mult2, $hash_seed1, $hash_seed2); [parent: b05f7ecec44b]