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