国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

使用Function.apply()的參數數組化來提高JavaScript程序性能的技巧_javascript技巧

來源:懂視網 責編:小采 時間:2020-11-27 21:47:43
文檔

使用Function.apply()的參數數組化來提高JavaScript程序性能的技巧_javascript技巧

使用Function.apply()的參數數組化來提高JavaScript程序性能的技巧_javascript技巧:我們再來聊聊Function.apply() 在提升程序性能方面的技巧。 我們先從 Math.max() 函數說起, Math.max后面可以接任意個參數,最后返回所有參數中的最大值。 比如 alert(Math.max(5,8)) //8 alert(Math.max(5,7,9,3,1,6
推薦度:
導讀使用Function.apply()的參數數組化來提高JavaScript程序性能的技巧_javascript技巧:我們再來聊聊Function.apply() 在提升程序性能方面的技巧。 我們先從 Math.max() 函數說起, Math.max后面可以接任意個參數,最后返回所有參數中的最大值。 比如 alert(Math.max(5,8)) //8 alert(Math.max(5,7,9,3,1,6

我們再來聊聊Function.apply() 在提升程序性能方面的技巧。

我們先從 Math.max() 函數說起, Math.max后面可以接任意個參數,最后返回所有參數中的最大值。

比如

但是在很多情況下,我們需要找出數組中最大的元素。


對字符串進行循環操作,譬如替換、查找,應使用正則表達式,因為本身JavaScript的循環速度就比較慢,而正則表達式的操作是用C寫成的語言的API,性能很好。

高級對象

自定義高級對象和Date、RegExp對象在構造時都會消耗大量時間。如果可以復用,應采用緩存的方式。

DOM相關

插入HTML

很多人喜歡在JavaScript中使用document.write來給頁面生成內容。事實上這樣的效率較低,如果需要直接插入HTML,可以找一個容器元素,比如指定一個div或者span,并設置他們的innerHTML來將自己的HTML代碼插入到頁面中。

對象查詢

使用[“”]查詢要比.items()更快,這和前面的減少對象查找的思路是一樣的,調用.items()增加了一次查詢和函數的調用。

創建DOM節點

通常我們可能會使用字符串直接寫HTML來創建節點,其實這樣做

無法保證代碼的有效性

字符串操作效率低

所以應該是用document.createElement()方法,而如果文檔中存在現成的樣板節點,應該是用cloneNode()方法,因為使用createElement()方法之后,你需要設置多次元素的屬性,使用cloneNode()則可以減少屬性的設置次數——同樣如果需要創建很多元素,應該先準備一個樣板節點。

定時器

如果針對的是不斷運行的代碼,不應該使用setTimeout,而應該是用setInterval。setTimeout每次要重新設置一個定時器。

其他

腳本引擎

據我測試Microsoft的JScript的效率較Mozilla的Spidermonkey要差很多,無論是執行速度還是內存管理上,因為JScript現在基本也不更新了。但SpiderMonkey不能使用ActiveXObject

文件優化

文件優化也是一個很有效的手段,刪除所有的空格和注釋,把代碼放入一行內,可以加快下載的速度,注意,是下載的速度而不是解析的速度,如果是本地,注釋和空格并不會影響解釋和執行速度。

總結

本文總結了我在JavaScript編程中所找到的提高JavaScript運行性能的一些方法,其實這些經驗都基于幾條原則:

直接拿手頭現成的東西比較快,如局部變量比全局變量快,直接量比運行時構造對象快等等。

盡可能少地減少執行次數,比如先緩存需要多次查詢的。

盡可能使用語言內置的功能,比如串鏈接。

盡可能使用系統提供的API,因為這些API是編譯好的二進制代碼,執行效率很高

同時,一些基本的算法上的優化,同樣可以用在JavaScript中,比如運算結構的調整,這里就不再贅述了。但是由于JavaScript是解釋型的,一般不會在運行時對字節碼進行優化,所以這些優化仍然是很重要的。

當然,其實這里的一些技巧同樣使用在其他的一些解釋型語言中,大家也可以進行參考。

由于是以前做過的測試,測試代碼已經不全,我補充了一部分如下:

附錄2

代碼1:

代碼2:

代碼3:

在firefox下測試這兩段代碼,結果是代碼2優于代碼1和3,而代碼1一般優于代碼3,有時會被代碼3超過;而在IE 6.0下,測試壓力較大的時候(如測試10000次以上)代碼2和3則有時候優于代碼1,有時候就會遠遠落后代碼1,而在測試壓力較小(如5000次),則代碼2>代碼3>代碼1。

代碼4:

代碼5:

上面兩段代碼在Firefox和IE下測試結果都是性能接近的。

代碼6:

代碼7:

代碼8:

代碼9:

這四段代碼在Firefox下6和8的性能接近,7和9的性能接近,而6, 8 < 7, 9;

最后我們來看一下空循環

代碼10:

代碼11:

最后的測試出現了神奇的結果,Firefox下代碼10所花的時間與代碼11所花的大約是24:1。所以它不具備參考價值,于是我沒有放在一開始給大家看。

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

使用Function.apply()的參數數組化來提高JavaScript程序性能的技巧_javascript技巧

使用Function.apply()的參數數組化來提高JavaScript程序性能的技巧_javascript技巧:我們再來聊聊Function.apply() 在提升程序性能方面的技巧。 我們先從 Math.max() 函數說起, Math.max后面可以接任意個參數,最后返回所有參數中的最大值。 比如 alert(Math.max(5,8)) //8 alert(Math.max(5,7,9,3,1,6
推薦度:
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 成人国内精品久久久久影院 | 日韩二三区| 欧美日韩中字 | 亚洲欧美日韩综合在线 | 一区二区三区观看 | 国产精品视频第一区二区三区 | 亚洲一区二区久久 | 99久久综合国产精品免费 | 欧美在线视频二区 | 久久久久久久久久久9精品视频 | 91精品专区| 欧美系列在线 | 久久精品免费一区二区视 | 日韩欧美高清视频 | 韩日视频在线观看 | 欧美国产日韩在线播放 | 欧美在线综合视频 | 欧美日韩在线第一页 | 高清亚洲 | 日韩欧美伊人久久大香线蕉 | 国产在线视欧美亚综合 | 韩国一区二区三区 | 亚洲入口| 激情另类国内一区二区视频 | 国产aⅴ精品一区二区三区久久 | 国内精品视频 | 欧美中文一区 | 九九国产精品九九 | 欧美日韩第一页 | 日韩在线视频精品 | 亚洲欧美日韩国产色另类 | 国产一区二区三区欧美 | 免费不卡视频 | 欧美日本道免费一区二区三区 | 国产日韩欧美中文 | 欧美 在线播放 | 免费观看欧美一区二区三区 | 国产69久久精品成人看小说 | 精品欧美一区二区三区精品久久 | 久久久精 | 亚洲91在线 |