Fabrice Bellard的PC emulator implemented in Javascript速度非常快 - 它会在几秒钟内在浏览器中启动一个小型的Linux映像。
使用了哪些技术来获得这种表现?
答案 0 :(得分:4)
我使用优秀的http://jsbeautifier.org/来美化缩小的JS代码。在我看来,这是一本精心编写的,非繁琐的,明智的程序代码。这本身就是一项了不起的成就,但必须与现代JavaScript解释器的惊人表现共享。
答案 1 :(得分:2)
我认为,与现代JS解释器的“速度”分享一些普遍的功劳在Bellard的技术列表中是一个很大的偏见(因为他不会取代浏览器的引擎)。 他的优化技巧是什么?是一个很好的问题,我想在其上获得更详细的记录。
到目前为止我可以说出的要点
刷新页面时还请注意浏览器缓存。如果它全部在内存中(由主机操作系统优化),它会非常快速地启动。执行直接(如果缓存在内存中)复制(使用load_binary())“未压缩”二进制段(start_linux.bin,vmlinux26.bin,root.bin)。没有硬盘I / O限制。
答案 2 :(得分:0)
截至2018年,Fabrice已使用asm.js和WebAssembly来实现这一目标。
您可以阅读更多here。
如果您查看Inspector(或我们称为Chrome DevTools,或Firefox的Inspector),则会看到一些wasm://
来源(在Firefox上),这意味着他使用WebAssembly来实现此目的。
答案 3 :(得分:-2)
也许使用C to JavaScript编译器?像Emscripten:http://code.google.com/p/emscripten/