Python is a VM too (even it doesn't have a JIT compiler), and the argument of using/not using a technology is easier when is already preinstalled. And the argument may be the same to every software package: to run in "..." instead of plain C is overkill.
I think we all agree that native code is faster and a lot of times consumes less memory. Yet it does not make it faster as implementation goes. An easy to test part: JRuby is faster than Ruby 1.9 which have a JIT by a small margin and much more 1.8, Jython/IronPython are faster the reference implementation. If you want to dynamically add some functionality in C world (C++) you have two major options easy to integrate: add Lua, or use dynamic libraries, which have to expose C functionality to be standard. Lua is easy to interpret and small memory footprint, libraries are hard to debug and sometimes not as flexible if you want to change just some aspects of your program and you want to iterate. Is much faster to do it using .Net's reflection or use a Mono framework like AddIn. And when you add this library, it will not add any performance impact.
Another feature that JITs have an edge is when you want to generate compiled code at runtime (Phalanger). You can as you have all exposed. Let's say 2x slower than optimized C, but many times than an optimized C interpreter. Here is 1 page of code of generated Boo code that can evaluate as easy or as complex expressions as Boo language can support at runtime.
Where you use this in normal applications!? Rarely, but you have a lot of functionality to start from, a lot of paradigms and languages. I noticed that you like Python, so you may give Boo a shot (is static typed Python, with option to use dynamic constructs, and you will notice about its performance is like Python + Cython that is written freely).



Reply With Quote