dev/c/realloc_speed_test/realloc_speed_test_c.c

43 lines
912 B
C

// time ./realloc_speed_test_c 50000 10000 100000
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "xmalloc.h"
int main(int argc, char *argv[])
{
if (argc != 4) {
fputs("Usage: realloc_speed_test_cpp iterations nobj maxsz\n", stderr);
exit(-1);
}
size_t iterations = (size_t)atoi(argv[1]);
size_t nobj = (size_t)atoi(argv[2]);
size_t maxsz = (size_t)atoi(argv[3]);
void **p = malloc(sizeof(void *) * nobj);
memset(p, 0, sizeof(void *) * nobj);
size_t i, idx, sz;
for (i = 0; i < iterations; i++) {
idx = (size_t)(rand() % (int)nobj);
sz = i;//(size_t)(rand() % (int)maxsz);
p[idx] = realloc(p[idx], sz);
if (sz && !p[idx]) {
fprintf(stderr, "Alloc error at i = %lu\n", i);
exit(-1);
}
}
for (i = 0; i < nobj; i++)
free(p[i]);
free(p);
printf("Success, iterations = %lu, nobj = %lu, maxsz = %lu\n", iterations, nobj, maxsz);
return EXIT_SUCCESS;
}