Javascript 引擎V8 7.7 版本發布
JavaScript 引擎V8 發布了7.7 版本,目前處於測試階段,正式版將於幾個星期後隨 Chrome 77 Stable 一起發布。更新內容如下:
延遲反饋分配為了優化JavaScript,V8 收集關於傳遞給各種操作數(例如+ 或o.foo)的操作數類型的反饋,這種反饋用於優化這些操作,使它們適合這些特定類型。
為了減少V8 的內存使用量,現在只在函數執行了一定數量的字節碼之後才分配反饋向量。這避免了為沒有從已收集反饋中受益的短期函數分配反饋向量。實驗表明,延遲分配反饋向量可以節省約2-8% 的V8 堆大小。
對於Chrome用戶來說,V8的堆大小在桌面版上減少了1-2%,在移動平台上減少了5-6%。桌面版性能沒有倒退,在移動平台上,看到了在內存有限的低端手機上性能是有提高的。
可伸縮的WebAssembly 後台編譯
下面的圖表是根據一台24 核Xeon 機器得出的,它編譯了Epic Zen Garden 。根據使用的線程數,與V8 的7.4 版本相比,編譯所需時間不到一半。
Stack trace 改進
幾乎所有由V8 引發的錯誤在創建時都會捕獲跟踪棧信息。可以通過非標準的error.stack 屬性從JavaScript 訪問此棧跟踪。第一次通過error.stack 檢索棧跟踪時,V8 將底層結構化棧跟踪序列化為字符串。這個序列化的棧跟踪被保存起來,以加快將來的error.stack 訪問。
此版本中對棧跟踪邏輯進行了一些內部重構(跟踪錯誤),簡化了代碼並將棧跟踪序列化性能提高了30%。
JavaScript 語言特性
提供特定區域設置的數字格式Intl.NumberFormat API,在這個版本中獲得了新的功能,它現在支持緊湊符號,科學符號,工程符號,符號顯示和測量單位。
const formatter = newIntl.NumberFormat('en', { style: 'unit', unit: 'meter-per-second',});formatter.format(299792458);// → '299,792,458 m/s'
詳情見發布說明: