/* Insert a bunch of stuff */ #include "brt.h" #include "key.h" #include "memory.h" #include #include #include #include #include #include const char fname[]="sinsert.brt"; enum { SERIAL_SPACING = 1<<6 }; enum { ITEMS_TO_INSERT_PER_ITERATION = 1<<20 }; //enum { ITEMS_TO_INSERT_PER_ITERATION = 1<<14 }; enum { BOUND_INCREASE_PER_ITERATION = SERIAL_SPACING*ITEMS_TO_INSERT_PER_ITERATION }; enum { NODE_SIZE = 1<<20 }; CACHETABLE ct; BRT t; void setup (void) { int r; unlink(fname); r = brt_create_cachetable(&ct, 0); assert(r==0); r = open_brt(fname, 0, 1, &t, NODE_SIZE, ct, default_compare_fun); assert(r==0); } void shutdown (void) { int r; r = close_brt(t); assert(r==0); r = cachetable_close(&ct); assert(r==0); } void long_long_to_array (unsigned char *a, unsigned long long l) { int i; for (i=0; i<8; i++) a[i] = (l>>(56-8*i))&0xff; } void insert (long long v) { unsigned char kc[8], vc[8]; DBT kt, vt; long_long_to_array(kc, v); long_long_to_array(vc, v); brt_insert(t, fill_dbt(&kt, kc, 8), fill_dbt(&vt, vc, 8), 0); } void serial_insert_from (long long from) { long long i; for (i=0; itv_sec-b->tv_sec)+1e-6*(a->tv_usec-b->tv_usec); } void biginsert (long long n_elements, struct timeval *starttime) { long i; struct timeval t1,t2; int iteration; for (i=0, iteration=0; i