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