views:

172

answers:

1

App Engine uses a "precompilation" process with the Java bytecode of an app to enhance the performance of the app in the Java runtime environment. Precompiled code functions identically to the original bytecode.

Is there any detailed information what this does?

+3  A: 

I found this in a googlegroups message:

Yes, pre-compilation reduces the time to load an application. This will benefit you on your first request after a deploy, after you've been cycled out or if more application instances are created to scale up with your load. You will see up to 30% improved loading time on your first request. Pre-compilation works by doing a bit of class loading work ahead of time in the App Engine environment before the request comes in.

So it seems that precompilation is about optimizing load time, not runtime performance.

Stephen C
"doing a bit of class loading work ahead of time". I wonder what that means ...
Thilo
Well, it *might* mean that pre-compilation pulls library classes referenced by the application into the application's JAR file (or equivalent).
Stephen C
I think it means class data sharing http://java.sun.com/j2se/1.5.0/docs/guide/vm/class-data-sharing.html
Murali VP
@Murali: that seems to affect only the JVM system classes (and is apparently on by default for any non-Windows client-mode Hotspot JVM, even outside of Google)
Thilo