[Mono-list] F# support on mono, performance

Rodrigo Kumpera kumpera at gmail.com
Mon Feb 1 08:59:41 EST 2010

On Mon, Feb 1, 2010 at 11:33 AM, Jonathan Shore <jonathan.shore at gmail.com>wrote:

> You are entirely right.    I like other quants in finance, use R for a lot
> of my work, but Java for performance (used to be C++).   My preference is to
> use a functional language at the level where I use Java.    The only
> practical choices at this point are Scala (not a big fan) or F#.    There
> are other implementations for FP such as INRIA's Ocaml, and Jaskell (but
> much too slow), Clojure (again too slow), etc ...
> I've also been back-reading on the LLVM vs mono code-generation debate.
>  At this point the main concern stated in not moving over to LLVM completely
> is the slower JIT'ing in LLVM.    Surely there are different levels of JIT
> optimisations that can be turned on or off within LLVM?

LLVM is significantly slower than mono's JIT even if we no optimizations are
done and the fast inssel backend is used.

> I recognize that the .NET CLR does at up-front JIT compilation, whereas the
> java JVM uses profiling to determine what to JIT and how.    Now that may be
> added complexity, but seems to serve Java well.   The cost of JIT is
> amortized or not done at all for portions of the code.

Working the way Java does is a huge amount of effort to be effective. It's
probably as hard as making mono's current JIT be on the same level as MS's.

> At this point LLVM has matured and gained enough momentum that one would
> suspect that it is more "expensive" for mono development to enhance its own
> code generation than adopt LLVM.    I raise this issue as there are a number
> of things that LLVM does quite a bit better.   The effort focused on
> in-house code generation could be focused on a better more complete LLVM /
> LLVM-mapping.     Just speaking as a 3rd party looking-in ...

Today it's not possible to completely switch to LLVM since, for example, it
runs on less archs than mono does and a binary with LLVM enabled is 3 times
bigger. And I'm not sure if it's even desirable to completely switch, it's
something that we'll eventually figure out once our LLVM backend gets more
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-list/attachments/20100201/29318f77/attachment.html 

More information about the Mono-list mailing list