Re: pgbench - add pseudo-random permutation function

Поиск
Список
Период
Сортировка
Искать
От
Fabien COELHO
Тема
Re: pgbench - add pseudo-random permutation function
Дата
Msg-id
alpine.DEB.2.22.394.2103311933490.620883@pseudo
Ответ на
Список
Дерево обсуждения
pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Hironobu SUZUKI <hironobu@interdb.jp>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Hironobu SUZUKI <hironobu@interdb.jp>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Thomas Munro <thomas.munro@enterprisedb.com>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Thomas Munro <thomas.munro@enterprisedb.com>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Michael Paquier <michael@paquier.xyz>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Hironobu SUZUKI <hironobu@interdb.jp>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Hironobu SUZUKI <hironobu@interdb.jp>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Hironobu SUZUKI <hironobu@interdb.jp>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Alvaro Herrera <alvherre@2ndquadrant.com>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Alvaro Herrera <alvherre@2ndquadrant.com>
Re: pgbench - add pseudo-random permutation function Michael Paquier <michael@paquier.xyz>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Michael Paquier <michael@paquier.xyz>
Re: pgbench - add pseudo-random permutation function Hironobu SUZUKI <hironobu@interdb.jp>
Re: pgbench - add pseudo-random permutation function Andres Freund <andres@anarazel.de>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: Re: pgbench - add pseudo-random permutation function David Steele <david@pgmasters.net>
Re: pgbench - add pseudo-random permutation function Hironobu SUZUKI <hironobu@interdb.jp>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Thomas Munro <thomas.munro@gmail.com>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Tomas Vondra <tomas.vondra@2ndquadrant.com>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Peter Eisentraut <peter.eisentraut@2ndquadrant.com>
Re: pgbench - add pseudo-random permutation function Alvaro Herrera <alvherre@2ndquadrant.com>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function David Steele <david@pgmasters.net>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Alvaro Herrera <alvherre@2ndquadrant.com>
Re: pgbench - add pseudo-random permutation function David Steele <david@pgmasters.net>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Muhammad Usama <m.usama@gmail.com>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>
Re: pgbench - add pseudo-random permutation function Fabien COELHO <coelho@cri.ensmp.fr>

Hello Dean,

> OK, attached is an update making this change and simplifying the rotate 
> code, which hopefully just leaves the question of what (if anything) to 
> do with pg_erand48().

Yep. While looking at it, I have some doubts on this part:

  m = (uint64) (pg_erand48(random_state.xseed) * (mask + 1)) | 1;
  r = (uint64) (pg_erand48(random_state.xseed) * (mask + 1));
  r = (uint64) (pg_erand48(random_state.xseed) * size);

I do not understand why the random values are multiplied by anything in 
the first place…

This one looks like a no-op :

    r = (uint64) (pg_erand48(random_state.xseed) * size);
    v = (v + r) % size;

    v = (v + r) % size
      = (v + rand * size) % size
      =? (v % size + rand * size % size) % size
      =? (v % size + 0) % size
      = v % size
      = v

I'm also skeptical about this one:

    r = (uint64) (pg_erand48(random_state.xseed) * (mask + 1));
    if (v <= mask)
       v = ((v * m) ^ r) & mask;

    v = ((v * m) ^ r) & mask
      = ((v * m) ^ r) % (mask+1)
      = ((v * m) ^ (rand * (mask+1))) % (mask+1)
      =? ((v * m) % (mask+1)) ^ (rand * (mask+1) % (mask+1))
      =? ((v * m) % (mask+1)) ^ (0)
      = (v * m) & mask

Or possibly I'm missing something obvious and I'm wrong with my 
arithmetic?

-- 
Fabien.
В списке pgsql-hackers по дате отправления
От: Robert Haas
Дата:
От: Joe Conway
Дата:
FAQ