straceMalloc

stracing malloc
git clone https://noulin.net/git/straceMalloc.git
Log | Files | Refs | README

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 }