最近微软向 Chromium 提交的代码显示,基于 Chromium 的 Web 浏览器(如 Google Chrome,Brave,Vivaldi,Opera 以及新的 Microsoft Edge)将拥有更快的启动速度,并使用更少的内存。
微软转向 Chromium 阵营后的一个重要变化就是让更多工程师为 Chromium 带去优化和改进。而最近微软提交的代码则表明,Chrome 的启动速度和内存使用将会有很大的变化。
在现代化的设备和系统上,Chrome 大都可以快速启动,但如果尝试在稍古老一些的计算机上运行 Chrome,我们可能会明显感受到启动的延迟。
因为基于 Chromium 的浏览器在启动时需要加载 chrome.dll 和 chrome_child.dll,而在运行缓慢的笔记本电脑上加载这些文件可能需要一秒多的时间 —— 在带有双核 CPU 和固态硬盘的 Windows 8.1 笔记本电脑上分别要花费 0.48 秒和 1.13 秒读取 dll 文件。
为此,开发者猜测,改变预读参数是否会显着降低加载时间?在进行更改后,他们发现同一台笔记本电脑可在不到一秒的时间内加载这两个文件。
在运行缓慢的笔记本电脑(Windows 8.1,双核,HDD)上,预读 chrome.dll 需要大约 0.48 秒,预读 chrome_child.dll 则需要大约 1.13 秒。
通过增加预读取图像线程的优先级和一次预读 2MB 而不是 1MB,最后发现预读 chrome.dll 需要约 0.48 秒,预读 chrome_child.dll 则下降到只花费约 0.51 秒。
就内存使用而言,微软工程师 Joe Laughlin 建议对进程内预取器进行更改,这将有利于浏览器的 CPU 使用和内存使用。
更改进程内(in-proc)预取程序以将代码加载到 Image 页而不是 MapFile 页以节省 CPU 并提高内存使用率,并且在启用较大文件的 OS PreFetch 的 OS 构建上不执行任何操作。
请注意,这需要 PreFetchVirtualMemory API,因此暂不支持 Windows 7。
当然提交的代码还需要测试才能被合并进 Chromium 中,不过能减少 Chrome 的内存使用终归是好事。