$ cat a.pl my @a = 1..1_000_000; $ time perl a.pl real 0m0.372s user 0m0.276s sys 0m0.092s #### $ cat a.c #include int main() { int ** array = (int**)malloc(1000000 * sizeof(int*)); int i; for (i = 100000; i--; ) { array[i] = (int*)malloc(sizeof(int)); } for (i = 100000; i--; ) { free(array[i]); } free(array); return 0; } $ time a real 0m0.014s user 0m0.012s sys 0m0.000s