Hacker News new | ask | show | jobs
by SoftwareMaven 5002 days ago
You are wrong. A JITted environment can take advantage of knowing about the current run of the system. As a result, it can do things like unroll loops and inline function calls.

Yes, you could do the same thing in C code, but the resulting executable would be unreasonably large because you would have to unroll every loop and inline every function.

Pypy has show itself faster than C in some cases as well[1].

1. http://morepypy.blogspot.com/2011/08/pypy-is-faster-than-c-a...

2 comments

That PyPy example has nothing to do with C and everything to do with a particular implementation of libc.
Maybe some day they will add profile guided optimization to C compilers.
They're not the same. VMs can assume invariants (which may not always hold) and compile specialized methods which depend on those assumptions and then fall back to a non-optimized version during the execution of a method. To do something like that (OSR) in C, you'll have to have a very sophisticated runtime.
you're kidding right? and at least referring to gcc's -fprofile-generate -fprofile-use right?
Profile-guided optimization is decades old. It was, for example, one of the things people loved about the (Ultrix?) DEC Alpha compiler was profile-driven optimization.
First VMS.

That was one of the outstanding compilers ever written.

There is a major difference between performing profile-generated optimizations at compile-time based on sample data, and performing it at run-time based on real data. It is one pretty good way in which JITs could beat programs implemented directly in C.
Not really since the 'sample' data is 'real' data which has been gathered during run-time.
That is the most optimistic statement about profile-directed optimization that I have ever read.