parisian 寫:
Gecko1.8 core的啟動已經很快了,其它和啟動速度有關的是套件安裝的多與少,因為在Fiirefox啟動的同時,套件也要跟著載入,至於像ForecastFox一類的Real-Time工作套件,對開啟速度也有直接的影響。
如果以XP系統作為藍本,應用程式啟動速度在沒有預載Library的情況下,在初始電腦開機後第二次啟動以後,啟動的時間就會縮短至第一次開啟時間的85%-90%,這是XP對常用程式優化啟動的第一個動態配置。
第二個是英語系國家普遍誤傳的所謂在firefox.exe後面加上/prefetch:1,其實這個參數對這裡的大多數版友來說也沒有加上的必要,只要我們到%windir%\prefetch這個資料夾裡直接看,如果裡面能看到一個"firefox.exe.xxxxxx.pf"檔,那就表示我們的Firefox已經被XP列入prefetch動態硬碟配置裡,firefox的啟動速度又再縮短10%左右。至於在全世到處誤傳的這個/prefetch:1參數,最早是因為M$擔心使用者不常用MediaPlayer,造成啟動過慢,所以把它強制prefetch,意思也就是說:就算我們永遠都不用它,它還是會被例入系統prefetch的範圍之內。
prefetch的大小是以系統實體記憶體的多寡自動進行配置,它的的快速啟動概念來自Windows 95時代Office 7.0版內崁的walign.exe常駐功能和Windows 98光碟附件裡的winalign.exe加值包。後者可以手動設置想加快啟動的應用程式組,所以我個人目前在Windows 98下面的Firefox就是這樣做。
使用Office 7.0至office 97電腦上的常駐程式裡都有這個東西,它在平常會記錄Office執行檔和Office文件,等到我們在進行硬碟重整時,Windows會就把它記錄下的Index文件提出做為重整依據,並把這些程式組和文件集中排列在硬碟的最外圈一帶,然後把它們在硬碟上的向量位置以40K byte(23/07/96更正:是「4K bytes」才對)多一點的大小,在Windows開機時直接Mappinge存入記憶體Table,所以在開啟Office時,電腦不用再去尋找硬碟上的向量表,直接就可以叫出相關程式和文件。
只要是常常啟動的程式,XP就會依系統可配置的prefetch大小,越常開啟就越有可能被列入prefetch動態配置名單,那個名單裡連帶會記錄這個主程式呼叫到的程式庫等等。然後每隔三天依據裡面的Layout.ini進行一次局部的自動硬碟重整。它就只整理prefetch資料夾裡每三天更新過的名單,以及各名單pf檔內寫入的關聯檔,把這些東西全部排整齊,儲存在硬碟中一個不可移動的綠色完整連續叢集區。
如果我們進行手動整理硬碟,就會看到兩三個這種綠色連續叢集區,一個就是prefetch,另一個是目前正在運作的系統、再來就是目前的pagefile.被列入prefetch的程式組,也是會依據Layout.ini在開機時把Table直接Mapping到記憶體中,記憶體內所儲存的並不是程式,而是一個硬碟上prefetch區塊的Mapping Table,所以被列名在prefetch裡的程式組,在啟動時不必再經過硬碟叢集索引,平均花費時間是其它沒prefetch程式的90%。
所以,像我們這種天天要開好多次Firefox的超級使用者,firefox.exe早就被XP給prefetch,根本不用再去強制性的加參數。被prefetch的程式在初次開啟時就快10%,再加上開啟第二次和第三次,CPU的Level 2 catche-hit命中就會提高,啟動又再快10%-15%,以Firefox這樣的小程式,被快取命中率加速到15%應該是沒有問題。
至於Firefox Preloader當初是從開放系統發展出來的,直接先把部分Object檔編譯在一起,開機時先預駐到記憶體中,但在Windows系統下面的這個輔助程式,因為全部都編譯好沒有路徑等參數設置,除了再重編,不然就是這樣了…如果還需要啟動更快又要換路徑的話。
parisian大大,每每發文都讓人學到很多東西
何不開個blog?在下會常去觀摩的
我個人學習的領域距離電腦很遙遠,也許只能一直是user的level
但是這些東西還真的蠻有趣的