I'm sure this doesn't need pointing out, but performance numbers for an experimental new language that carries none of the baggage of existing languages (especially languages not originally written for the JVM) is a bit suspect :)
Going on to claim that JVM language developers' "house is burning" because your language has started to do math faster (and not drastically faster, I'd add; even Java's only 4x faster than JRuby on this benchmark) is probably going a bit far. Of course you've seen numeric benchmarks I wrote for the dynamic language Surinx that were many times faster than JRuby, but of course Surinx wasn't Ruby and I wouldn't claim that there's something Surinx was doing (using JSR292) that could potentially improve JRuby the same amount. Duby now supports dynamic invocation and performs very well with JSR-292, but again there's no real comparison...it's not Ruby. JSR-292 is obviously very exciting work, especially if it can optimize primitive call paths straight through without any boxing along the way (something that's very difficult for most dynlangs on JVM). Are you able to get the same performance using the 292 backport on Java 6? Those of us with users need to continue supporting the JVMs they run... On Sun, May 23, 2010 at 7:39 PM, Rémi Forax <[email protected]> wrote: > Last week, I've written a small trace compiler (at least a kind of) for > phpreboot. > For those who did not attend to last JVM Summit, here is the basics: > http://wiki.jvmlangsummit.com/Trace-based_JIT > > In my case, phpr is an interpreter written in Java. > it basically parses an instruction or a block, create the corresponding AST > and interpret it by walking on the AST. > It also comes with a compiler that transform function and lambda > directly into bytecode. > I use JSR292 method handles to jump back and forth between the interpreter > and the compiled code. > > During last week, I've written a trace compiler which compile a while loop > during its execution. I've added a counter that count each iteration > and when the counter overflow, it compiles the test of the loop > and its body into a bytecode blob and execute it. > Furthermore, during the first runs, I record the runtime type of the > variables > so when I generate the loop body, I use these information to specialize > the generated bytecode (mainly in order to remove all boxing). > And it works very well ! > > I wonder if someone had already tried to do the same with its own JVM > Language ? > > For the curious, the source are here: > http://code.google.com/p/phpreboot/source/browse/trunk/phpreboot/src/com/googlecode/phpreboot/compiler > > Rémi > > > -- > You received this message because you are subscribed to the Google Groups > "JVM Languages" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/jvm-languages?hl=en. > -- You received this message because you are subscribed to the Google Groups "JVM Languages" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/jvm-languages?hl=en.
