#include <string.h>
#include <stdlib.h>
-#include <ctype.h>
#include "gmqcc.h"
static uint64_t stat_mem_deallocated_total = 0;
static uint64_t stat_mem_high = 0;
static uint64_t stat_mem_peak = 0;
+static uint64_t stat_mem_strdups = 0;
static uint64_t stat_used_strdups = 0;
static uint64_t stat_used_vectors = 0;
static uint64_t stat_used_hashtables = 0;
*/
static stat_size_table_t stat_size_new(void) {
return (stat_size_table_t)memset(
- mem_a(sizeof(stat_size_entry_t) * ST_SIZE),
- 0, ST_SIZE * sizeof(stat_size_entry_t)
+ mem_a(sizeof(stat_size_entry_t*) * ST_SIZE),
+ 0, ST_SIZE * sizeof(stat_size_entry_t*)
);
}
}
stat_used_strdups ++;
+ stat_mem_strdups += len;
return ptr;
}
con_out("%c",
(j >= memory->size)
? ' '
- : (isprint(((unsigned char*)(memory + 1))[j]))
+ : (util_isprint(((unsigned char*)(memory + 1))[j]))
? 0xFF & ((unsigned char*)(memory + 1)) [j]
: '.'
);
uint64_t mem = 0;
con_out("Memory Statistics:\n\
- Total vectors allocated: %llu\n\
- Total string duplicates: %llu\n\
- Total hashtables allocated: %llu\n\
- Total unique vector sizes: %llu\n",
+ Total vectors allocated: %llu\n\
+ Total string duplicates: %llu\n\
+ Total string duplicate memory: %f (MB)\n\
+ Total hashtables allocated: %llu\n\
+ Total unique vector sizes: %llu\n",
stat_used_vectors,
stat_used_strdups,
+ (float)(stat_mem_strdups) / 1048576.0f,
stat_used_hashtables,
stat_type_vectors
);