2011-06-14 13:02:33 +04:00
|
|
|
//~ kolan@nickolay-842 ~/dev/c/zalloc(default) $ time ./zalloc_test 50000 100000
|
|
|
|
//~ Success, iterations = 50000, nobj = 100000
|
|
|
|
//~
|
|
|
|
//~ real 0m0.246s
|
|
|
|
//~ user 0m0.110s
|
|
|
|
//~ sys 0m0.130s
|
|
|
|
|
2011-06-09 19:00:04 +04:00
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
|
2011-06-13 12:18:12 +04:00
|
|
|
#include "zalloc.h"
|
2011-06-09 19:00:04 +04:00
|
|
|
|
|
|
|
int main(int argc, char *argv[])
|
|
|
|
{
|
2011-06-14 13:02:33 +04:00
|
|
|
if (argc != 3) {
|
|
|
|
fputs("Usage: realloc_speed_test_cpp iterations nobj\n", stderr);
|
2011-06-09 19:00:04 +04:00
|
|
|
exit(-1);
|
|
|
|
}
|
|
|
|
|
|
|
|
size_t iterations = (size_t)atoi(argv[1]);
|
|
|
|
size_t nobj = (size_t)atoi(argv[2]);
|
|
|
|
|
2011-06-14 13:02:33 +04:00
|
|
|
void **p = zmalloc(sizeof(void *) * nobj);
|
2011-06-09 19:00:04 +04:00
|
|
|
memset(p, 0, sizeof(void *) * nobj);
|
|
|
|
|
|
|
|
size_t i, idx, sz;
|
|
|
|
for (i = 0; i < iterations; i++) {
|
|
|
|
idx = (size_t)(rand() % (int)nobj);
|
2011-06-14 13:02:33 +04:00
|
|
|
sz = i;
|
|
|
|
p[idx] = zrealloc(p[idx], sz);
|
2011-06-09 19:00:04 +04:00
|
|
|
|
|
|
|
if (sz && !p[idx]) {
|
|
|
|
fprintf(stderr, "Alloc error at i = %lu\n", i);
|
|
|
|
exit(-1);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-07-04 12:10:30 +04:00
|
|
|
for (i = 0; i < nobj; i++)
|
|
|
|
zclear(&p[i]);
|
2011-06-09 19:00:04 +04:00
|
|
|
|
2011-06-14 13:02:33 +04:00
|
|
|
printf("Success, iterations = %lu, nobj = %lu\n", iterations, nobj);
|
2011-06-09 19:00:04 +04:00
|
|
|
|
|
|
|
return EXIT_SUCCESS;
|
|
|
|
}
|