#include unsigned int xsize,ysize; /********************************/ void declared() { int i, j; unsigned int k; int tiles[80][50]; for(k = 0; k < 100000; k++) { for(i = 0; i < 80; i++) { for(j = 0; j < 50; j++) { tiles[i][j] = i + j; } } } } /********************************/ void dynamic_but_indexed() { unsigned int i, j; unsigned int k; unsigned int *tiles; tiles = malloc(xsize * ysize * sizeof(int)); for(k = 0; k < 100000; k++) { for(i = 0; i < xsize; i++) { for(j = 0; j < ysize; j++) { tiles[j + i * ysize] = i + j; } } } free(tiles); } /********************************/ void dynamic() { unsigned int i, j; unsigned int k; unsigned int *tiles_storage; unsigned int **tiles; tiles_storage = malloc(xsize * ysize * sizeof(int)); tiles = malloc(xsize * sizeof(int *)); for(i = 0; i < xsize; i++) { tiles[i] = tiles_storage + (i * ysize); } for(k = 0; k < 100000; k++) { for(i = 0; i < xsize; i++) { for(j = 0; j < ysize; j++) { tiles[i][j] = i + j; } } } free(tiles); free(tiles_storage); } /********************************/ int main() { time_t clock0, clocks; int ret; xsize=80; ysize=50; clock0 = clock(); declared(); clocks = clock(); printf("declared = %9d\n", clocks-clock0); clock0 = clock(); dynamic_but_indexed(); clocks = clock(); printf("indexed = %9d\n", clocks-clock0); clock0 = clock(); dynamic(); clocks = clock(); printf("dynamic = %9d\n", clocks-clock0); return 0; }