4 ms·
Great project. My team used it for a live-coding Python notebook: https://github.com/inkandswitch/livebook#readme https://github.com/inkandswitch/livebook#readm
by adamwiggins 8y ago
Great project. My team used it for a live-coding Python notebook: https://github.com/inkandswitch/livebook#readme https://github.com/inkandswitch/livebook#readme
To my surprise it was faster than Jupyter / CPython for some tasks (e.g. loading and parsing large CSVs).
- dunpeal 8y agoShouldn't be too surprising, given how PyPy is generally faster than CPython by about x7-8 factor: http://speed.pypy.org/ http://speed.pypy.org/ I'd expect a much larger difference in tasks that are pure Python (loading a CSV is done primarily through the csv module, i.e. all the hot loops are in C).
- icebraining 8y agoYes, but PyPy is usually compiled to machine code (and emits machine code), not to JS.
- make3 8y agoI love Python but js is close to an order of magnitude faster
- icebraining 8y agoHave you tried PyPy?
- dunpeal 8y agoIndeed, but many of the optimizations introduced by PyPy should be visible regardless of compilation target.
- azakai 8y agoTrue, but the asm.js is then compiled to machine code by the browser's JS JIT. I'd expect some overhead from sandboxing etc., but it should be fairly close to native speed.
- ris 8y agoIt's not "overhead from sandboxing" that's a problem, it's the fact that translating from bytecode to bytecode to bytecode will cause it to lose some ... succinctness at each step, giving the final machine code generator a harder time coming up with efficient code for it.
- bmays 8y agoThis is great, was looking for this exactly!
- benatkin 8y agoWow, that's awesome! Direct link to the live notebook: https://livebook.inkandswitch.com/fork/welcome https://livebook.inkandswitch.com/fork/welcome Naturally, I changed the first code block to this: from random import randint, seed seed() "\n".join([randint(5, 25) * ' ' + s for s in ['such code', 'much live', 'wow']])