Home | History | Annotate | Line # | Download | only in analyze
      1 #include "test/jemalloc_test.h"
      2 
      3 #include <stdio.h>
      4 
      5 /*
      6  * Print the sizes of various important core data structures.  OK, I guess this
      7  * isn't really a "stress" test, but it does give useful information about
      8  * low-level performance characteristics, as the other things in this directory
      9  * do.
     10  */
     11 
     12 static void
     13 do_print(const char *name, size_t sz_bytes) {
     14 	const char *sizes[] = {"bytes", "KB", "MB", "GB", "TB", "PB", "EB",
     15 		"ZB"};
     16 	size_t sizes_max = sizeof(sizes)/sizeof(sizes[0]);
     17 
     18 	size_t ind = 0;
     19 	double sz = sz_bytes;
     20 	while (sz >= 1024 && ind < sizes_max - 1) {
     21 		sz /= 1024;
     22 		ind++;
     23 	}
     24 	if (ind == 0) {
     25 		printf("%-20s: %zu bytes\n", name, sz_bytes);
     26 	} else {
     27 		printf("%-20s: %f %s\n", name, sz, sizes[ind]);
     28 	}
     29 }
     30 
     31 int
     32 main() {
     33 #define P(type)								\
     34 	do_print(#type, sizeof(type))
     35 	P(arena_t);
     36 	P(arena_stats_t);
     37 	P(base_t);
     38 	P(decay_t);
     39 	P(edata_t);
     40 	P(ecache_t);
     41 	P(eset_t);
     42 	P(malloc_mutex_t);
     43 	P(prof_tctx_t);
     44 	P(prof_gctx_t);
     45 	P(prof_tdata_t);
     46 	P(rtree_t);
     47 	P(rtree_leaf_elm_t);
     48 	P(slab_data_t);
     49 	P(tcache_t);
     50 	P(tcache_slow_t);
     51 	P(tsd_t);
     52 #undef P
     53 }
     54