微軟優化chrome.exe 被固定到任務欄的過程可降低CPU 使用率
微軟為Chromium 提交的一個補丁能對檢查瀏覽器是否被固定在任務欄進行性能優化。根據微軟在補丁中的描述,他們發現Chrome會在啟動後的45s使用一段代碼檢測當前正在運行的chrome.exe是否已被固定在任務欄上。每調用一次這段代碼(chrome!UtilWinImpl::IsPinnedToTaskbar)都會產生較高的CPU消耗(~300ms的CPU time以及1s wall time)。
這個過程主要包括:
- 枚舉被固定在任務欄文件夾中的所有快捷方式
- 檢查它們是否為當前運行的exe 的快捷方式
- 枚舉所有與快捷方式相關的 Shell verbs
- 檢查verb 是否處於”unpin”狀態(即是否已被固定在任務欄)
上述的過程使用了一個單獨的進程來進行檢查,而且檢查Shell verbs 會導致shell 擴展被加載,從而運行第三方代碼,這些都會導致CPU 使用率升高。
微軟對這個過程進行了優化,他們認為無需在快捷方式上枚舉verb,而是使用代碼庫中的其他固定狀態檢查來代替。於是刪除了枚舉shell verbs 的代碼,並在瀏覽器進程中運行代碼,而不是使用單獨的進程,因為已經不再會加載第三方代碼。
此項變更最後相應地降低了檢查瀏覽器在任務欄狀態時的CPU 使用率。這個消耗可能對大部分配置來說可能並不明顯,不過微軟的Eric Lawrence 認為,修復小問題最終可以提升瀏覽器的性能。