With disk caches primed, the main culprit may be the dynamic linker. Some of those environments (Java, Perl, Python, PHP that others mention in this thread) always load substantial number of dynamic libraries before doing anything useful. That doesn't come free. Numberous symbols have to be resolved, some static data initialized. There's non-trivial VirtualMemory to set up for such libraries, too.<p>For some more info: <a href="http://harmful.cat-v.org/software/dynamic-linking/" rel="nofollow">http://harmful.cat-v.org/software/dynamic-linking/</a><p>EDIT: a micro-benchmark between static and dynamic C program:<p><pre><code> gcc -- static a.c
time (for i in `seq 1024`; do ./a.out > /dev/null; done; )
real 0m0.958s
####
gcc a.c # that's dynamic linking
time (for i in `seq 1024`; do ./a.out > /dev/null; done; )
real 0m1.292s
</code></pre>
...and that's just libc alone! Those times were quite stable across several runs, so it's not some random one-time fluctuation.<p>The code:<p><pre><code> #include <stdio.h>
int main(void) {
puts("hello world!");
return 0;
}</code></pre>