為 V8 加速:使用可變堆數字
· 閱讀時間約 6 分鐘
在 V8,我們不斷努力提升 JavaScript 的性能。作為這一努力的一部分,我們最近重新審視了 JetStream2 基準測試套件,以消除性能瓶頸。本篇文章詳細介紹了一項具體的優化,它使 async-fs
基準測試達到了顯著的 2.5倍
性能提升,並對整體得分帶來了可觀的增益。該優化受基準測試的啟發,但類似模式也出現在真實世界代碼中。
在 V8,我們不斷努力提升 JavaScript 的性能。作為這一努力的一部分,我們最近重新審視了 JetStream2 基準測試套件,以消除性能瓶頸。本篇文章詳細介紹了一項具體的優化,它使 async-fs
基準測試達到了顯著的 2.5倍
性能提升,並對整體得分帶來了可觀的增益。該優化受基準測試的啟發,但類似模式也出現在真實世界代碼中。
在過去幾年中,V8 的垃圾回收器(GC)發生了很大的變化。奧里諾科項目將一個順序性的全程停頓垃圾回收器轉變為一個主要併行並發且具有增量回退功能的回收器。
大約三個月前,我作為實習生加入了 V8 團隊(Google 慕尼黑),自那時起,我一直在研究 VM 的 Deoptimizer —— 這對我來說是一個全新的領域,既有趣又充滿挑戰。我實習的第一部分專注於提升 VM 的安全性,第二部分則聚焦於性能改進,具體來說,是移除用於取消連結先前去優化函數的數據結構,這在垃圾回收期間曾是性能瓶頸。本文將描述我實習的第二部分。我將解釋 V8 從前如何取消連結去優化的函數,我們如何改變了這一過程,以及由此獲得的性能提升。