straceMalloc
malloc.c (1915B)
1 #! /usr/bin/env sheepy
2
3 #include "libsheepyObject.h"
4
5 int argc; char **argv;
6
7 #define COUNT 16
8 char *pointers[COUNT];
9
10 int main(int ARGC, char** ARGV) {
11
12 argc = ARGC; argv = ARGV;
13
14 puts("malloc");
15 char *s;
16 u64 start, end;
17 range(i, COUNT) {
18 start = getMonotonicTime();
19 s = malloc((1<<i)*1024);
20 pointers[i] = s;
21 end = getMonotonicTime();
22 printf("%d %p size: %dKB, time: %ldns\n", (int)i ,s, 1<<i, end-start);
23 }
24
25 put
26
27 puts("alloca");
28 range(i, 12) {
29 start = getMonotonicTime();
30 s = alloca((1<<i)*1024);
31 end = getMonotonicTime();
32 printf("alloca %d %p size: %dKB, time: %ldns\n", (int)i ,s, 1<<i, end-start);
33 }
34
35 put
36 puts("accesses in malloc");
37 start = getMonotonicTime();
38 range(i, COUNT) {
39 rangeStep(ix, (1<<i)*1024, 4096) {
40 pointers[i][ix] = '1';
41 }
42 }
43 end = getMonotonicTime();
44 printf("1 - access malloc'd buffers - time: %ldms\n", (end-start)/1000000);
45
46 start = getMonotonicTime();
47 range(i, COUNT) {
48 rangeStep(ix, (1<<i)*1024, 4096) {
49 pointers[i][ix] = '1';
50 }
51 }
52 end = getMonotonicTime();
53 printf("2 - access malloc'd buffers - time: %ldms\n", (end-start)/1000000);
54
55 put
56 puts("realloc");
57 range(i, COUNT) {
58
59 start = getMonotonicTime();
60 pointers[i] = realloc(pointers[i], (1<<i)*1024 + (1<<i)*1024);
61 end = getMonotonicTime();
62 printf("%d %p size: %dKB, time: %ldns\n", (int)i ,pointers[i], 1<<i, end-start);
63 }
64
65 put
66 range(i, COUNT) {
67
68 start = getMonotonicTime();
69 pointers[i] = realloc(pointers[i], (1<<i)*1024 - 128);
70 end = getMonotonicTime();
71 printf("%d %p size: %dKB, time: %ldns\n", (int)i ,pointers[i], 1<<i, end-start);
72 }
73
74 put
75 puts("free");
76 range(i, COUNT) {
77 start = getMonotonicTime();
78 free(pointers[i]);
79 end = getMonotonicTime();
80 printf("%d %p size: %dKB, time: %ldns\n", (int)i ,pointers[i], 1<<i, end-start);
81 }
82 }