讓Perl程式跑得更快些
發(fā)布時間:2008-08-21 閱讀數(shù): 次 來源:網(wǎng)樂原科技
最好是能設(shè)計一個較好的演算法 (algorithm),這通常會讓程式有大不相同的表現(xiàn)。駱駝書第八章里有些你或許想知道的增進效率小技巧。
其它方法包括自動載入較少使用的 Perl 程式碼。請參看標(biāo)準(zhǔn) perl 套件中的 AutoSplit及 AutoLoader模組的用法?;虍?dāng)你能斷定程式執(zhí)行效率的瓶頸在何處時,用 C來寫那個部份,就像用組合語言來撰寫 C程式的瓶頸部份一樣。與此法相近的是使用以 C撰寫瓶 頸部份的模組 (例如 CPAN中的 PDL 模組)。
在某些情況下,使用後端的編譯器把程式編譯成位元碼 (byte code)(可節(jié)省編譯時間) 或是將 perl程式轉(zhuǎn)編譯為 C程式的作法值得一試;這些作法絕對會節(jié)省編譯的時間并且有時能省一些[但不多]執(zhí)行時間 。請參考“編譯你的 Perl程式”這個問題的答案。
如果你目前是將你的 perl直譯器動態(tài)連結(jié)到 libc.so的話,重新作一份靜態(tài)連結(jié)到 libc.a的 perl直譯器可以提高 10-25%的執(zhí)行效能。雖然這會使你的 perl直譯器變得更胖,但你的 Perl程式 (及程式設(shè)計者) 或許會因此而感謝你。詳情請參考 perl標(biāo)準(zhǔn)套件原始碼版本中的 INSTALL 檔案。
一些未經(jīng)證實的報告中宣稱有些使用 sfio的 Perl直譯器表現(xiàn)得比沒有用 sfio的還好 (針對於 IO頻繁的應(yīng)用程式)。想試試看?參考 perl套件原始程式版中的 INSTALL 檔案,尤其是“Selecting File IO mechanisms”這一段。
使用 undump程式把編譯後的檔案格式存到硬碟里以加快執(zhí)行的速度已經(jīng)是老掉牙的手法了。它已不再是個可行的方法,因為這方法只有幾種平臺能用,況且它終究不是個治本之 道。