4 ms·
We were seeing some significant slowdowns when running lua in emscripten (testing on repl.it) vs. PNaCl. Take this naive fibonacci function: function fib(n) re
by binji 13y ago
We were seeing some significant slowdowns when running lua in emscripten (testing on repl.it) vs. PNaCl.
Take this naive fibonacci function:
function fib(n) return n<2 and n or fib(n-1)+fib(n-2) end
print(fib(30))
On my machine, it completes in less than a second on PNaCl, but takes nearly 10 seconds to complete in emscripten.
- azakai 13y agorepl.it contains code from a few years ago. That's way before a huge amount of general optimizations in emscripten, as well as asm.js. Here is a more up to date Lua VM running in JS: http://kripken.github.io/lua.vm.js/repl.html http://kripken.github.io/lua.vm.js/repl.html But even that is already out of date ;) just this week I found that I was building Lua with a bad choice of optimization flags. We include Lua VM benchmarks in the emscripten test suite, so for the latest numbers (with the proper optimization flags), see https://docs.google.com/spreadsheet/ccc?key=0AkuGewEm05tZdFdKQlEtaFBmX3NjTWlHOVlDbXloY1E&usp=sharing#gid=2 https://docs.google.com/spreadsheet/ccc?key=0AkuGewEm05tZdFd... It's possible to run the Lua VM in JS at only about 50% slower than a native build. edit: fix link
- binji 13y agoAh, thanks for that! I was wondering if repl.it was out of date. Might be worthwhile to get the owner to update... :)
- azakai 13y agoRegarding repl.it, I'm not sure how active it is. Their python C port for example is 2 years since the last update. I'll ping them to see. Regarding lua, I updated the lua vm project, and tried your fibonacci function from before in the repl http://kripken.github.io/lua.vm.js/repl.html http://kripken.github.io/lua.vm.js/repl.html Looks like in both firefox and chrome it runs in about a second in JS, which feels about the same as the time it takes in PNaCl in chrome on http://gonativeclient.appspot.com/demo/lua http://gonativeclient.appspot.com/demo/lua