-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathtest_memory.h
63 lines (49 loc) · 1.29 KB
/
test_memory.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#pragma once
#if !INTEGER_MAP_USE_DLMALLOC
#error INTEGER_MAP_USE_DLMALLOC must be true to use INTEGER_MAP_EXPERIMENT(MEMORY)
#endif
//---------------------------------------------------
// TestCase for MEMORY operation
//---------------------------------------------------
extern "C"
{
typedef struct
{
size_t maxfp;
size_t fp;
size_t used;
} dlmalloc_stats_t;
void dlmalloc_stats(dlmalloc_stats_t *stats);
}
void TestBody()
{
ResultHolder rh;
// Determine markers
std::vector<int> markers;
g_Params.DefineMarkers(markers);
rh.results.resize(markers.size());
std::vector<size_t> keys;
GenerateKeys(keys, markers[markers.size() - 1], 0);
dlmalloc_stats_t stats;
dlmalloc_stats(&stats);
size_t memAtStart = stats.used;
MAP_DECLARE;
MAP_INITIALIZE();
int i = 0;
for (int m = 0; m < markers.size(); m++)
{
int limit = markers[m];
for (; i < limit; i++)
{
// Insert & increment the table entry
MAP_INCREMENT(keys[i]);
}
ResultHolder::Result& r = rh.results[m];
r.marker = markers[m];
dlmalloc_stats_t stats;
dlmalloc_stats(&stats);
r.nanosecs = stats.used - memAtStart;
}
MAP_CLEAR();
rh.dump();
};