- JavaScript高效圖形編程
- (美)Raffaele Cecco
- 1018字
- 2021-04-09 20:45:10
1.2 優(yōu)化什么,何時優(yōu)化?
和優(yōu)化技術(shù)同等重要的是:知道什么時候不優(yōu)化。過早優(yōu)化會帶來晦澀的代碼和bug,優(yōu)化很少執(zhí)行的代碼區(qū)域也沒有必要。以帕萊托法則(即80-20法則)來看,20%的代碼將占用80%的CPU周期。程序員應(yīng)該集中于優(yōu)化這20%、10%或5%,而忽略其他部分。這樣bug會更少,大部分代碼都保持了可讀性,也保證了你的頭腦清醒。
你可以用Firebug等性能測試工具,來了解哪些函數(shù)花費(fèi)了絕大部分執(zhí)行時間;然后檢查這些函數(shù)并決定要優(yōu)化的代碼段。Firebug性能測試器依賴火狐(Firefox)瀏覽器,有些瀏覽器有自己的性能測試器。而老版本的瀏覽器則不一定有類似的工具。
圖1-1是Firebug性能測試器的界面。在Console菜單,選擇Profile來開始性能測試,然后再選擇Profile來停止測試。然后Firebug會顯示所有在開始和結(jié)束點(diǎn)之間被調(diào)用的JavaScript函數(shù)分析。所顯示的信息如下所示。

圖1-1 運(yùn)行中的Firebug性能測試器
Function
被調(diào)用的函數(shù)名
Percent
在函數(shù)中所花費(fèi)的時間和總時間的比例
Call
函數(shù)被調(diào)用的次數(shù)
Own time
在函數(shù)中所花費(fèi)的時間(不包括對其他函數(shù)的調(diào)用)
Time
在函數(shù)中所花費(fèi)的時間(包括對其他函數(shù)的調(diào)用)
Average
Own time的平均值
Min
函數(shù)的最快執(zhí)行時間
Max
函數(shù)的最慢執(zhí)行時間
File
函數(shù)所在的JavaScript文件
如果你能自己創(chuàng)建適合所有瀏覽器的性能測試集,可以提高開發(fā)效率,并在沒有測試工具的瀏覽器上使用。它只是將相同的測試頁面載入到每一個瀏覽器,然后閱讀測試結(jié)果。它也可以用來迅速檢查函數(shù)內(nèi)的細(xì)微優(yōu)化。“自定義代碼性能測試”一節(jié)將討論如何創(chuàng)建自己的性能測試集。
警告
類似Firebug的調(diào)試器會給時間數(shù)值帶來不小的誤差。在執(zhí)行性能測試之前,要確保關(guān)閉調(diào)試器。
“優(yōu)化”是一個很寬泛的詞,程序員可以從不同方面,以不同方式來對一個Web應(yīng)用進(jìn)行優(yōu)化。
算法
應(yīng)用程序是使用最有效的方法來處理數(shù)據(jù)的嗎?代碼優(yōu)化沒法修正一個差勁的算法。實(shí)際上,找對算法和DOM操作的高效一樣,是保證應(yīng)用快速運(yùn)行最重要的因素之一。
有時,如果應(yīng)用要求不高,一個慢但容易實(shí)現(xiàn)的算法就足夠了。但如果性能是個問題,你也許需要檢查研究一下當(dāng)前所使用的算法。
本書不會討論常見的搜索和排序等具體算法,因?yàn)樽x者可以在相關(guān)的計(jì)算機(jī)書籍和網(wǎng)絡(luò)資源中找到許多關(guān)于它們的討論。即使是游戲中涉及的3D圖形學(xué)、物理和碰撞檢測等這些更專業(yè)的問題和算法,也有很多書籍可以參考。
JavaScript
仔細(xì)檢查調(diào)用得非常頻繁的代碼,在應(yīng)用的某些關(guān)鍵區(qū)域中,對頻繁執(zhí)行部分的一個小小優(yōu)化都會有不錯的收益。
DOM和jQuery
DOM加jQuery是操縱Web頁面非常方便的一種方式。但如果你沒有注意到一些簡單規(guī)則的話,也會成為性能重災(zāi)區(qū)。DOM搜索和操作比較慢,應(yīng)該盡量避免。
- ClickHouse性能之巔:從架構(gòu)設(shè)計(jì)解讀性能之謎
- R語言數(shù)據(jù)分析從入門到精通
- 摩登創(chuàng)客:與智能手機(jī)和平板電腦共舞
- Mastering QGIS
- PowerCLI Cookbook
- C語言最佳實(shí)踐
- C語言程序設(shè)計(jì)立體化案例教程
- ADI DSP應(yīng)用技術(shù)集錦
- HTML5+CSS3網(wǎng)站設(shè)計(jì)基礎(chǔ)教程
- SAP BusinessObjects Dashboards 4.1 Cookbook
- 軟件品質(zhì)之完美管理:實(shí)戰(zhàn)經(jīng)典
- Mastering AWS Security
- JQuery風(fēng)暴:完美用戶體驗(yàn)
- Jakarta EE Cookbook
- Building Clouds with Windows Azure Pack