benchmark-zrand.c - libzahl - big integer library
 (HTM) git clone git://git.suckless.org/libzahl
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) README
 (DIR) LICENSE
       ---
       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 }