From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | Fabien COELHO <coelho(at)cri(dot)ensmp(dot)fr> |
Cc: | Thomas Munro <thomas(dot)munro(at)gmail(dot)com>, David Steele <david(at)pgmasters(dot)net>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, Hironobu SUZUKI <hironobu(at)interdb(dot)jp>, PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: pgbench - add pseudo-random permutation function |
Date: | 2021-03-14 14:54:46 |
Message-ID: | 20210314145446.GA31638@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2021-Mar-14, Fabien COELHO wrote:
> + /*-----
> + * Apply 4 rounds of bijective transformations using key updated
> + * at each stage:
> + *
> + * (1) whiten: partial xors on overlapping power-of-2 subsets
> + * for instance with v in 0 .. 14 (i.e. with size == 15):
> + * if v is in 0 .. 7 do v = (v ^ k) % 8
> + * if v is in 7 .. 14 do v = 14 - ((14-v) ^ k) % 8
> + * note that because of the overlap (here 7), v may be changed twice.
> + * this transformation if bijective because the condition to apply it
> + * is still true after applying it, and xor itself is bijective on a
> + * power-of-2 size.
> + *
> + * (2) scatter: linear modulo
> + * v = (v * p + k) % size
> + * this transformation is bijective is p & size are prime, which is
> + * ensured in the code by the while loop which discards primes when
> + * size is a multiple of it.
> + *
> + */
My main question on this now is, do you have a scholar reference for
this algorithm?
--
Álvaro Herrera Valdivia, Chile
"Someone said that it is at least an order of magnitude more work to do
production software than a prototype. I think he is wrong by at least
an order of magnitude." (Brian Kernighan)
From | Date | Subject | |
---|---|---|---|
Next Message | Julien Rouhaud | 2021-03-14 14:57:37 | Re: REINDEX backend filtering |
Previous Message | Dmitry Dolgov | 2021-03-14 14:48:33 | Re: Index Skip Scan (new UniqueKeys) |