/* * Duas abordagens para preencher um segmento de dados. */ #include #include #include #include #include #include #include #define PAGESIZE 4096 #define N 64*1024 char mat[N][PAGESIZE]; void preenche_rapido(char c) { int i, j; clock_t inicio, fim; printf("Inicio preenche rápido.\n"); inicio = clock(); for (i = 0; i < N; i++) for (j = 0; j < PAGESIZE; j++) mat[i][j] = c; fim = clock(); printf("Fim preenche rápido: %.2f segundo(s)\n", (float) (fim-inicio)/CLOCKS_PER_SEC); } void preenche_lento(char c) { int i,j; clock_t inicio, fim; printf("Inicio preenche lento.\n"); inicio = clock(); for (j = 0; j < PAGESIZE; j++) for (i = 0; i < N; i++) mat[i][j] = c; fim = clock(); printf("Fim preenche lento: %.2f segundo(s)\n", (float) (fim-inicio)/CLOCKS_PER_SEC); } int main() { char *topo = sbrk(0); printf("Topo da area de dados = %p\n", topo); preenche_rapido('*'); preenche_lento('-'); return 0; }