jvilk / doppio-demo

Demo of the Doppio Runtime System.
MIT License
4 stars 4 forks source link

javac perf #14

Open tinkerstudent opened 8 years ago

tinkerstudent commented 8 years ago

It takes ~ 30 secs to compile Fib.java using Chrome 48

Is this expected?

jvilk commented 8 years ago

@tinkerstudent The master version of doppio-demo is using an old version of DoppioJVM with massive performance regressions, since we fixed a compatibility problem and, in doing so, caused all JAR file extraction to pass through interpreted Java code.

The master branch of doppio now uses a JavaScript library for extraction, so it is significantly faster.

The new-objects branch of doppio-demo uses the latest version of doppio, but it is in beta. You'll need to npm link a locally-built version of the master branch of doppio and run webpack to build it (the README is out of date).

I wanted to finish the new demo and launch it, but ran out of time. It's mostly complete, but there are some lingering bugs.

rvergis commented 8 years ago

@jvilk thanks

Is the master branch of doppio using the Javac.class to compile Java files? Or is there a js library that does the compilation from source code to Java byte code?

I tried the following 1) Built doppio master 2) npm link'ed doppio master. Verified linked doppiojvm exists in node_modules. 3) Built doppio-demo new-objects using "npm install" and "grunt build" (looks like it has a webpack task) 4) Diff verified doppio.js (in the doppio-demo build) with the doppio.js in the doppio/build/release 5) Launched the doppio-demo. 6) Compiled Fib.java. Compilation time is still ~ 30 secs (Chrome 48)

Looks like I missed a step above?

jvilk commented 8 years ago

I just reproduced this. You're doing everything correctly. It looks like that's our current level of performance. I thought we were a bit faster than that.

Ever since I originally published Doppio in 2014, I've been working on its compatibility with Java programs. Some changes dramatically improved compatibility, but set back performance.

rvergis commented 8 years ago

@jvilk thanks! for confirming.

The version of doppio at https://plasma-umass.github.io/doppio-demo/doppiojvm/index.html seems to have much better perf!

Compiling HelloWorld.java took ~ 4 secs (Chrome 48)

Is there a way I can rollback to that version of doppio?

jvilk commented 8 years ago

Well, it's all in Git somewhere. But I'm not going to fix bugs in that version, since it's old and buggy.

Here's the commit behind that demo:

https://github.com/plasma-umass/doppio/commit/9b6666ad8b94d54049846e25981c6120929e55e6

And the old demo code is... well, I think it may be in the gh-pages branch of doppio? The website itself w/ the compiled demo is here: https://github.com/plasma-umass/doppio-demo/tree/gh-pages/doppiojvm

jvilk commented 8 years ago

Also, I imagine the speed difference is smaller if you remove the overhead of JVM startup. The old demo re-used a warmed up JVM instance for each java execution, which left leftover state that could mess with subsequent programs. It also cached parsed class files, which is technically illegal as the contents of the class could change across executions.

tinkerstudent commented 8 years ago

@jvilk thanks!. We are going to add a caching layer to the demo. Hoping to get closer to ~ 4 secs on Chrome.