On Sep 5, 2011, at 1:11 AM, Rémi Forax wrote: > I've just compiled the hotspot (64bits server) using the hotspot-comp > workspace of hotspot express (hsx) > http://hg.openjdk.java.net/hsx/hotspot-comp/hotspot/ > > Here are the result when running PHP.reboot on fibonacci > (-server is the server VM of jdk1.7.0): > > Java: > java -server bigfibo 4.45 s > java -hsx bigfibo 4.44 s > > PHP.reboot (no type annotation) > phpr.sh -server bigfibo 22.72 s > phpr.sh -hsx bigfibo 13.61 s > > PHP.reboot (type specialization) > phpr.sh -server bigfibo 11.09 s > phpr.sh -hsx bigfibo 8.06 s > > PHP.reboot (user defined type annotation) > phpr.sh -server bigfibo2 6.96 s > phpr.sh -hsx bigfibo2 4.21 s > > PHP.reboot is an hybrid runtime, it starts with an interpreter > that walks the AST (really slow) and then compile to bytecode. > > The first test is with no type information provided by the user, > so all variables are object and invokedynamic is used for the > operations, the comparison and for function calls. > As you see, there is a huge speedup. > > The second test enables a flag that ask the runtime to try to > specialize the function at runtime. Because the algorithm > used is a fast-forward typechecker, the parameter of fibo > is san pecialized as int but the return type is still an object > (because fibo is recursive). > So basically here, invokedynamic is used for the function calls > and the + between the results of the function calls. > This '+' is a nasty one because the two parameters are objects, > so it requires a double guards. > You can see the speedup is nice too. > > The third test uses a file that declare the parameter type and > return type of fibo as int, so only the function calls are done > using invokedynamic. > You can also see the speedup and weirdly it's now faster than Java > (not a lot if compare the value but don't forget that > PHP.reboot starts in interpreter mode) so it's clearly faster. > I will take a look to the inlining tree to try to understand why, > it's maybe because fibo is a recursive call or because using > an invokedynamic which is resolved as an invokestatic > enables more inlining than just an invokestatic. > > John, Christian, Tom and all the others of the hotspot-comp team, > you make my day :)
These numbers make mine too :-) Thanks for trying the current version. -- Christian > > cheers, > Rémi > > _______________________________________________ > mlvm-dev mailing list > mlvm-dev@openjdk.java.net > http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev _______________________________________________ mlvm-dev mailing list mlvm-dev@openjdk.java.net http://mail.openjdk.java.net/mailman/listinfo/mlvm-dev