改進程式碼快取
V8使用程式碼快取來快取常用腳本的生成程式碼。從Chrome 66開始,我們透過在頂層執行後生成快取,使更多的程式碼得以快取。這使初次載入時的解析及編譯時間減少了20–40%。
V8使用程式碼快取來快取常用腳本的生成程式碼。從Chrome 66開始,我們透過在頂層執行後生成快取,使更多的程式碼得以快取。這使初次載入時的解析及編譯時間減少了20–40%。
TL;DR: 自 Chrome 66 起,V8 在背景執行緒上編譯 JavaScript 原始碼,減少主執行緒上的編譯時間,對於典型網站來說降低了 5% 到 20%。
自版本 41 起,Chrome 支援透過 V8 的 StreamedSource
API 在背景執行緒上解析 JavaScript 原始檔案(新技術介紹)。這使得 V8 能夠在 Chrome 從網路下載檔案的第一部分後立即開始解析 JavaScript 原始碼,並在 Chrome 通過網路串流檔案時並行進行解析。透過此方式,V8 幾乎可以在檔案下載完成時完成 JavaScript 的解析,從而顯著提升加載速度。
在 Chrome 66 中調試記憶體洩漏變得更容易。Chrome 的 DevTools 現在可以追蹤並快照 C++ DOM 物件,並顯示所有從 JavaScript 可達的 DOM 物件及其引用。這項功能是新 V8 垃圾回收器的 C++ 追蹤機制的一項優勢。
自 2014 年 Speedometer 1.0 初次發布以來,Blink 和 V8 團隊一直將這個基準測試作為流行 JavaScript 框架實際使用的代理,我們在這個基準測試中取得了相當大的速度提升。我們獨立驗證了這些改進確實能轉化為實際用戶的好處,通過衡量真實世界的網站,觀察到流行網站的頁面加載時間的改進同樣提高了 Speedometer 的分數。
程式碼覆蓋率提供有關應用程式中某些部分是否以及執行次數的資訊。它通常用來確定測試套件在多大程度上檢驗特定程式碼基礎。
作為一名 JavaScript 開發者,您可能經常會遇到可以使用程式碼覆蓋率的情境。例如:
console.log
進行 printf
-風格的除錯或手動逐步執行程式碼,程式碼覆蓋率可以顯示應用程式中哪些部分已被執行的即時資訊。