跳至主要内容

改進程式碼快取

· 閱讀時間約 5 分鐘
Mythri Alle, 首席程式碼快取專家

V8使用程式碼快取來快取常用腳本的生成程式碼。從Chrome 66開始,我們透過在頂層執行後生成快取,使更多的程式碼得以快取。這使初次載入時的解析及編譯時間減少了20–40%。

V8 發佈版本 v6.6

· 閱讀時間約 8 分鐘
V8 團隊

每六週,我們會按照發佈流程創建 V8 新分支。每個版本是在 Chrome Beta 里程碑之前直接從 V8 的 Git 主分支分支出來的。今天,我們很高興地宣佈我們的最新分支,V8 版本 6.6,該版本目前是 Beta 版,幾週後將與 Chrome 66 穩定版一同發佈。V8 v6.6 包含了各種針對開發者的豐富功能。這篇文章提供了一些亮點的預覽,敬請期待發佈。

背景編譯

· 閱讀時間約 5 分鐘
[Ross McIlroy](https://twitter.com/rossmcilroy),主執行緒捍衛者

TL;DR: 自 Chrome 66 起,V8 在背景執行緒上編譯 JavaScript 原始碼,減少主執行緒上的編譯時間,對於典型網站來說降低了 5% 到 20%。

背景

自版本 41 起,Chrome 支援透過 V8 的 StreamedSource API 在背景執行緒上解析 JavaScript 原始檔案(新技術介紹)。這使得 V8 能夠在 Chrome 從網路下載檔案的第一部分後立即開始解析 JavaScript 原始碼,並在 Chrome 通過網路串流檔案時並行進行解析。透過此方式,V8 幾乎可以在檔案下載完成時完成 JavaScript 的解析,從而顯著提升加載速度。

從 JavaScript 到 DOM 並回溯的追蹤

· 閱讀時間約 5 分鐘
Ulan Degenbaev、Alexei Filippov、Michael Lippautz 和 Hannes Payer —— DOM 的合作夥伴

在 Chrome 66 中調試記憶體洩漏變得更容易。Chrome 的 DevTools 現在可以追蹤並快照 C++ DOM 物件,並顯示所有從 JavaScript 可達的 DOM 物件及其引用。這項功能是新 V8 垃圾回收器的 C++ 追蹤機制的一項優勢。

延遲反序列化

· 閱讀時間約 7 分鐘
Jakob Gruber ([@schuay](https://twitter.com/schuay))

TL;DR: 延遲反序列化最近在 V8 v6.4 中默認啟用,平均減少每個瀏覽器標籤超過 500 KB 的 V8 記憶體使用量。繼續閱讀以了解更多!

介紹 V8 快照

但首先,讓我們退一步來看看 V8 如何使用堆快照來加速新 Isolate 的創建(大致對應於 Chrome 中的一個瀏覽器標籤)。我的同事 Yang Guo 在他關於自定義啟動快照的文章中給出了很好的介紹:

V8 發佈 v6.5

· 閱讀時間約 4 分鐘
V8 團隊

每六週,我們會根據 發佈流程 創建一個新的 V8 分支。每個版本都從 V8 的 Git 主分支分出,時間選定在 Chrome Beta 里程碑之前。今天,我們很高興地宣佈最新的分支 V8 版本 6.5,它目前處於 Beta 階段,並將在幾週內與 Chrome 65 的穩定版本一起正式發佈。V8 v6.5 提供了各種面向開發者的功能。本篇文章為即將到來的正式發佈提供了一些亮點的預覽。

優化哈希表:隱藏哈希碼

· 閱讀時間約 6 分鐘
[Sathya Gunasekaran](https://twitter.com/_gsathya),哈希碼的守護者

ECMAScript 2015 引入了多種新的資料結構如 Map、Set、WeakSet 和 WeakMap,所有這些在底層都使用了哈希表。本文章詳細介紹了 最近的改進,即 V8 v6.3+ 如何在哈希表中存儲鍵。

Chrome 歡迎 Speedometer 2.0!

· 閱讀時間約 3 分鐘
Blink 和 V8 團隊

自 2014 年 Speedometer 1.0 初次發布以來,Blink 和 V8 團隊一直將這個基準測試作為流行 JavaScript 框架實際使用的代理,我們在這個基準測試中取得了相當大的速度提升。我們獨立驗證了這些改進確實能轉化為實際用戶的好處,通過衡量真實世界的網站,觀察到流行網站的頁面加載時間的改進同樣提高了 Speedometer 的分數。

V8 發布 v6.4

· 閱讀時間約 4 分鐘
V8 團隊

每六週,我們會根據發布流程創建一個新的 V8 分支。每個版本在 Chrome Beta 里程碑前都會從 V8 的 Git 主分支分叉而來。今天我們很高興宣布最新分支 V8 版本 6.4,該版本目前處於 beta 階段,數週後將與 Chrome 64 Stable 一起發布。V8 v6.4 為開發者帶來了各種令人欣喜的功能。本篇文章預覽了一些即將推出的亮點內容。

JavaScript 程式碼覆蓋率

· 閱讀時間約 9 分鐘
Jakob Gruber ([@schuay](https://twitter.com/schuay))

程式碼覆蓋率提供有關應用程式中某些部分是否以及執行次數的資訊。它通常用來確定測試套件在多大程度上檢驗特定程式碼基礎。

為何有用?

作為一名 JavaScript 開發者,您可能經常會遇到可以使用程式碼覆蓋率的情境。例如:

  • 關心您的測試套件品質?正在重構一個大型舊專案?程式碼覆蓋率能準確告知程式碼基礎中的哪些部分被覆蓋。
  • 想快速知道程式碼基礎中特定部分是否被執行?與其使用 console.log 進行 printf-風格的除錯或手動逐步執行程式碼,程式碼覆蓋率可以顯示應用程式中哪些部分已被執行的即時資訊。
  • 或者您正在針對速度進行優化,並希望知道應該集中在哪些位置?執行計次可以指出熱點函式和迴圈。