我正在努力做出最快的高质量RNG.阅读
http://xorshift.di.unimi.it/后,xorshift128似乎是一个很好的选择. C代码是
#include <stdint.h> uint64_t s[ 2 ]; uint64_t next(void) { uint64_t s1 = s[ 0 ]; const uint64_t s0 = s[ 1 ]; s[ 0 ] = s0; s1 ^= s1 << 23; // a return ( s[ 1 ] = ( s1 ^ s0 ^ ( s1 >> 17 ) ^ ( s0 >> 26 ) ) ) + s0; // b,c }
我不是SSE / AVX专家,但我的cpu支持SSE4.1 / SSE4.2 / AVX / F16C / FMA3 / XOP指令.您如何使用这些代码来加速这个代码(假设你想要制造数十亿个这样的随机数),这个加速的实际预期限制是多少?