官术网_书友最值得收藏!

  • 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)化都會有不錯的收益。

DOMjQuery

DOM加jQuery是操縱Web頁面非常方便的一種方式。但如果你沒有注意到一些簡單規(guī)則的話,也會成為性能重災(zāi)區(qū)。DOM搜索和操作比較慢,應(yīng)該盡量避免。

主站蜘蛛池模板: 资溪县| 高雄市| 蚌埠市| 安顺市| 泗水县| 城固县| 来凤县| 虹口区| 本溪| 阿城市| 苍山县| 化德县| 吉隆县| 长子县| 石渠县| 佳木斯市| 云龙县| 南安市| 太保市| 克什克腾旗| 博爱县| 临邑县| 广东省| 馆陶县| 安吉县| 伊通| 济阳县| 栖霞市| 贡嘎县| 平果县| 东辽县| 城市| 厦门市| 新野县| 彰化市| 安岳县| 宜阳县| 全州县| 汝州市| 宁陵县| 交口县|