libzahl

big integer library
git clone git://git.suckless.org/libzahl
Log | Files | Refs | README | 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 }