gpt4 book ai didi

javascript - Fabrice Bellard 使用什么技巧使他的 Javascript PC 模拟器如此之快?

转载 作者:数据小太阳 更新时间:2023-10-29 04:46:45 25 4
gpt4 key购买 nike

法布里斯·贝拉德的 PC emulator implemented in Javascript速度快得令人印象深刻——它会在几秒钟内在浏览器中启动一个小型 Linux 镜像。

使用了哪些技术来获得这种性能?

最佳答案

我认为与现代 JS 解释器的“速度”分享一些普遍的荣誉在 Bellard 的技术列表中是一个遥远的话题(因为他没有取代浏览器的引擎)。 他的优化技巧是什么?是个很好的问题,我想得到更详细的记录。

到目前为止我能说出的要点

  1. (可选)JS 类型数组排除了不必要的内存分配动态(调整大小)。固定类型(大小)允许分配连续的内存块(此类 block 中没有可变长度元素的段)并统一寻址单一类型的元素。
  2. 通过定制的简约启动器快速启动(参见 Fabrice 发布的 linuxstart 代码,也参见他的名为 TCCBOOT http://bellard.org/tcc/tccboot.html 的项目)
  3. 优化的未压缩嵌入式内核(请参阅内核配置,它非常小巧并针对小型“linux”进行了优化)。
  4. 最少数量的设备(设备是 super 标准的并且很容易被内核识别。到目前为止,我已经正确地研究了串行设备,但其余的都受益于类似的属性)。 虽然 Ramdisk 初始化相当慢
  5. 小(2048 block )未压缩 root.bin ext2 系统。根系统由最小组合(rootfs、proc、tmpfs、devpts)组成。没有交换。
  6. (不确定)他已经修补了与终端通信的 ttyS0(串行端口设备,或者实际上是内核 UART 驱动程序 - 准确地说)的缓冲区大小。使用他的 term.js 绑定(bind)以任何方式缓冲通信(我发现 UART 本身没有传输缓冲区)。请注意,仿真(如本例)可能比真实的要快得多。

刷新页面时请注意浏览器缓存。如果它全部在内存中(由主机操作系统优化),它会非常快。执行“未压缩”二进制段(start_linux.bin、vmlinux26.bin、root.bin)的直接(如果缓存在内存中)复制(使用 load_binary())。没有硬盘 I/O 限制。

关于javascript - Fabrice Bellard 使用什么技巧使他的 Javascript PC 模拟器如此之快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com