[Mono-list] Performance Characteristics vs. Java

Mads Pultz mpultz@get2net.dk
Sat, 29 Sep 2001 12:02:27 +0200

Regarding the CLR's execution model compared to the JVM execution model
there are some differences.

1) The CLR JIT compiles all MSIL code (I think this is a requirement in the
specifications, maybe someone from the list can verify that?). Most JVM's
doesn't JIT compile all bytecode, they operate in a mixed mode (depending on
which part of the code, either JIT compilation or interpretation occurs).
Whether or not this gives the CLR an advantage I don't know, but there is a
reason to why JVM's doesn't JIT compile all bytecode. They spend time on
optimizing the code used frequently and just interpret the rest.

2) The CLR allows execution of unsafe code. GC and verification is turned
off so here the CLR has some obvious advantages. There are of course some
security issues but I think it will be usable for server application where
the code can be trusted.

3) PreJIT (ngen.exe). MSIL code is compiled to native code (as much as
possible) before execution so when the program eventually is executed (still
under the CLR) minimum amount of JIT compilation is required. Is intended to
reduce start-up time.