Here is speed test result for malloc, realloc and calloc at Dual Core @1.86Ghz, 1.75 GB RAM...
Source-Code:malloc + free: Pass 1: 1359 ms Pass 2: 1391 ms Pass 3: 1359 ms Pass 4: 1344 ms Pass 5: 1359 ms Pass 6: 1328 ms Pass 7: 1344 ms Pass 8: 1344 ms Pass 9: 1375 ms Pass 10: 1359 ms Average: 1356.20 ms realloc(NULL) + free: //similar to malloc Pass 1: 1344 ms Pass 2: 1406 ms Pass 3: 1328 ms Pass 4: 1329 ms Pass 5: 1343 ms Pass 6: 1344 ms Pass 7: 1328 ms Pass 8: 1344 ms Pass 9: 1328 ms Pass 10: 1328 ms Average: 1342.20 ms calloc + free: Pass 1: 4734 ms Pass 2: 4672 ms Pass 3: 4641 ms Pass 4: 4609 ms Pass 5: 4641 ms Pass 6: 4672 ms Pass 7: 4672 ms Pass 8: 4640 ms Pass 9: 4625 ms Pass 10: 4625 ms Average: 4653.10 ms realloc: Pass 1: 656 ms Pass 2: 672 ms Pass 3: 656 ms Pass 4: 735 ms Pass 5: 671 ms Pass 6: 688 ms Pass 7: 656 ms Pass 8: 672 ms Pass 9: 656 ms Pass 10: 672 ms Average: 673.40 msIs there portable version of GetTickCount? I tried _ftime.millis but it show annoying result (negative numbers)...Code:int *test = NULL; //int sequence DWORD start = 0; unsigned int i, j, total = 0; for(i=1; i<=10; i++) { start = GetTickCount(); for(j=1; j<=320000; j++) { /* test = calloc(j, sizeof(int)); free(test); */ /* test = malloc(j * sizeof(int)); free(test); */ /* test = realloc(NULL, j * sizeof(int)); //same as malloc free(test); */ /* test = malloc(j * sizeof(int)); free(test); */ /* test = realloc(test, j * sizeof(int)); */ } total += (GetTickCount() - start); printf("Pass %d: %d ms\n", i, (unsigned int)(GetTickCount() - start)); } //free(test); //for realloc(test, j* sizeof(int)); printf("Average: %.2f ms\n", (float)total / (float)10); return 0;



LinkBack URL
About LinkBacks


