用户熟知的 Chrome、Edge、Brave、Vivaldi 和 Opera 都是基于 Chromium 的浏览器,在大家的认知中,这些浏览器的性能应该都差不太多,各个浏览器之间的主要差别可能就是界面和一些功能。只不过从最近的测试来看,情况并非如此。
Yandex Browser 是俄罗斯搜索巨头 Yandex 在 2012 年推出的浏览器,同样基于 Chromium,其特点是内置了卡巴斯基的反病毒技术来保护用户安全。近日 Yandex 浏览器性能团队的负责人 Maxim Smirnov 在官方博客的一篇名为「命名很重要」的文章中表示,他们仅仅就是将浏览器的可执行文件改名为 chrome.exe,就大幅降低了 GPU 进程的崩溃率和内存占用。
事情的起因是 Maxim Smirnov 的团队发现了一个触摸板滚动问题,该问题影响了 Yandex 浏览器,但在同一台设备上,Chrome 和 Edge 却没有受到影响。在技术层面,Yandex 浏览器使用的触摸板事件处理逻辑与 Chrome 这些浏览器完全相同,因此他们就想到重命名 Yandex 浏览器的可执行文件是否会改善浏览器的性能。最后证实,当 Yandex 将其浏览器的可执行文件从 browse.exe 重命名为 chrome.exe 时,滚动问题就得到了解决。
结果令我们非常惊讶,对于实验组中使用 AMD 显卡的用户,GPU 进程崩溃的次数减少了 5.5 倍,GPU 进程的内存占用平均减少了 8%,网页的打开速度和界面响应速度也略有加快。
通过简单修改可执行文件的名称就能改进性能和稳定性,也表明 AMD 的驱动程序对某些功能或优化使用了「硬编码」的进程名称列表,而 Yandex 的浏览器并不在该列表中。
Yandex 目前已经联系了 AMD,要求将他们的浏览器也加入列表。只不过要想获得这个优化就必须等待 AMD 推出新版驱动程序,届时也需要用户更新驱动程序,为了让用户提前用上 “优化” 过的 Yandex,它们决定在 22.9.0 版本率先做出改变,就是把自己 “伪装” 成 Chrome。
目前 Yandex 使用了 Chromium 的一个内部功能,只有 GPU 进程本身被替换成了 chrome.exe,Yandex 浏览器的可执行文件名称依然保持不变。打开任务管理器的用户仍然会看到 browser.exe 是 Yandex 进程的名称。
Yandex 表示这个改进是在采用 AMD 显卡的设备上发现的,目前还不清楚 NVIDIA 的显卡是否也受此影响。除了 Yandex 浏览器,现在也还不清楚其他基于 Chromium 的浏览器是否也受到这个问题的影响,各个浏览器厂商可以进行类似的测试来验证这一点。