benchmark-zrand.c (777B)
1 #include "util.h" 2 3 4 #define BENCHMARK(INSTRUCTION, FAST)\ 5 do {\ 6 i = FAST ? 1000000L : 1000L;\ 7 TIC;\ 8 while (i--) {\ 9 INSTRUCTION;\ 10 }\ 11 TOC;\ 12 printf("%s: %s %s\n",\ 13 #INSTRUCTION, STIME, FAST ? "µs" : "ms");\ 14 } while (0) 15 16 17 int 18 main(int argc, char *argv[]) 19 { 20 z_t r, n; 21 jmp_buf jmp; 22 size_t i; 23 24 benchmark_init(); 25 26 if (setjmp(jmp)) { 27 zperror(argv[0]); 28 return 1; 29 } 30 zsetup(jmp); 31 zinit(r); 32 zinit(n); 33 34 zsetu(n, 1); 35 zlsh(n, n, 64000L - 1L); 36 zset(r, n); 37 38 BENCHMARK(zrand(r, FAST_RANDOM, MODUNIFORM, n), 0); 39 BENCHMARK(zrand(r, LIBC_RAND_RANDOM, MODUNIFORM, n), 0); 40 BENCHMARK(zrand(r, LIBC_RANDOM_RANDOM, MODUNIFORM, n), 0); 41 BENCHMARK(zrand(r, LIBC_RAND48_RANDOM, MODUNIFORM, n), 0); 42 43 zfree(r); 44 zfree(n); 45 zunsetup(); 46 return 0; 47 (void) argc; 48 }