微軟出手改進(jìn) Chromium,內(nèi)存占用更少啟動更快
微軟轉(zhuǎn)向 Chromium 陣營后的一個(gè)重要變化就是讓更多工程師為 Chromium 帶去優(yōu)化和改進(jìn)。而最近微軟提交的代碼則表明,Chrome 的啟動速度和內(nèi)存使用將會有很大的變化。
在現(xiàn)代化的設(shè)備和系統(tǒng)上,Chrome 大都可以快速啟動,但如果嘗試在稍古老一些的計(jì)算機(jī)上運(yùn)行 Chrome,我們可能會明顯感受到啟動的延遲。
因?yàn)榛?Chromium 的瀏覽器在啟動時(shí)需要加載 chrome.dll 和 chrome_child.dll,而在運(yùn)行緩慢的筆記本電腦上加載這些文件可能需要一秒多的時(shí)間 —— 在帶有雙核 CPU 和固態(tài)硬盤的 Windows 8.1 筆記本電腦上分別要花費(fèi) 0.48 秒和 1.13 秒讀取 dll 文件。
為此,開發(fā)者猜測,改變預(yù)讀參數(shù)是否會顯著降低加載時(shí)間?在進(jìn)行更改后,他們發(fā)現(xiàn)同一臺筆記本電腦可在不到一秒的時(shí)間內(nèi)加載這兩個(gè)文件。
在運(yùn)行緩慢的筆記本電腦(Windows 8.1,雙核,HDD)上,預(yù)讀 chrome.dll 需要大約 0.48 秒,預(yù)讀chrome_child.dll 則需要大約 1.13 秒。
通過增加預(yù)讀取圖像線程的優(yōu)先級和一次預(yù)讀 2MB 而不是 1MB,最后發(fā)現(xiàn)預(yù)讀 chrome.dll 需要約 0.48 秒,預(yù)讀 chrome_child.dll 則下降到只花費(fèi)約 0.51 秒。
就內(nèi)存使用而言,微軟工程師Joe Laughlin 建議對進(jìn)程內(nèi)預(yù)取器進(jìn)行更改,這將有利于瀏覽器的 CPU 使用和內(nèi)存使用。
更改進(jìn)程內(nèi)(in-proc)預(yù)取程序以將代碼加載到 Image 頁而不是 MapFile 頁以節(jié)省 CPU 并提高內(nèi)存使用率,并且在啟用較大文件的 OS PreFetch 的 OS 構(gòu)建上不執(zhí)行任何操作。
請注意,這需要 PreFetchVirtualMemory API,因此暫不支持 Windows 7。
當(dāng)然提交的代碼還需要測試才能被合并進(jìn) Chromium 中,不過能減少 Chrome 的內(nèi)存使用終歸是好事。