最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript中匿名、命名函數(shù)的性能測(cè)試

 更新時(shí)間:2014年09月04日 13:08:14   投稿:junjie  
這篇文章主要介紹了JavaScript中匿名、命名函數(shù)的性能測(cè)試,簡(jiǎn)單來(lái)講匿名即沒(méi)有名字的函數(shù),它和命名函數(shù)相比性能如何呢,本文即是對(duì)它們性能的測(cè)試,需要的朋友可以參考下

我們經(jīng)常通過(guò)匿名函數(shù)(Anonymous function)來(lái)寫(xiě)回調(diào)。

簡(jiǎn)單來(lái)講匿名即沒(méi)有名字的函數(shù),一般都立即執(zhí)行。但是它與命名函數(shù)(有名字的函數(shù))的性能如何呢?

我們可以比較一下,我們隨便找一臺(tái)可以執(zhí)行Shell命令的計(jì)算機(jī)來(lái)使用大量函數(shù)調(diào)用看一看二者執(zhí)行消耗時(shí)間:

anonymous.js

復(fù)制代碼 代碼如下:

var count = 100000000
  , sum   = 0
while (count--) (function() { sum++ })()

執(zhí)行一下
復(fù)制代碼 代碼如下:

$ time node anonymous.js
real    0m1.456s
user    0m0.015s
sys     0m0.031s

再來(lái)看看命名函數(shù)

named.js

復(fù)制代碼 代碼如下:

var count = 100000000
  , sum   = 0

var cb = function() {
  sum++
}

while (count--) cb()


執(zhí)行一下
復(fù)制代碼 代碼如下:

$ time node named.js
real    0m0.575s
user    0m0.000s
sys     0m0.046s

命名函數(shù)會(huì)快很多,為什么會(huì)這樣呢?其實(shí)不難解釋,匿名函數(shù)每次都需要重新解釋回調(diào),但是命名函數(shù)只需要解釋一次,因此性能會(huì)有提升,但是測(cè)試發(fā)現(xiàn)這種提升是非常非常微小的,完全不必將非常順手的一個(gè)回調(diào)單獨(dú)寫(xiě)成另外一個(gè)變量。

另外命名函數(shù)還有兩種寫(xiě)法:

函數(shù)表達(dá)式

復(fù)制代碼 代碼如下:

var func = function() {
  console.log('a')
}

函數(shù)聲明
復(fù)制代碼 代碼如下:

function func() {
  console.log('b')
}

其實(shí)這兩個(gè)一起用的話可能會(huì)有問(wèn)題,如
復(fù)制代碼 代碼如下:

var func = function() {
  console.log('a')
}
function func() {
  console.log('b')
}
//輸出為: a

因此目前多使用函數(shù)表達(dá)式的形式,但函數(shù)聲明的性能如何呢?

named2.js

復(fù)制代碼 代碼如下:

var count = 100000000
  , sum   = 0

function cb() {
  sum++
}

while (count--) cb()


執(zhí)行一下,并比較二者
復(fù)制代碼 代碼如下:

$ time node named.js
real    0m0.553s
user    0m0.000s
sys     0m0.015s

$ time node named2.js
real    0m0.529s
user    0m0.000s
sys     0m0.047s


似乎函數(shù)聲明會(huì)稍微快一點(diǎn)點(diǎn),不過(guò)快得也非常非常不明顯,個(gè)人還是建議函數(shù)聲明式寫(xiě)法。

PS: 此數(shù)據(jù)均在Windows7下使用git-base測(cè)試。

相關(guān)文章

  • 全選復(fù)選框JavaScript編寫(xiě)小結(jié)(附代碼)

    全選復(fù)選框JavaScript編寫(xiě)小結(jié)(附代碼)

    這篇文章主要介紹了全選”復(fù)選框JavaScript編寫(xiě),分別附上html和js代碼以供大家更深刻了解,具體操作步驟大家可查看下文的詳細(xì)講解,感興趣的小伙伴們可以參考一下。
    2017-08-08
  • jquery簡(jiǎn)單體驗(yàn)

    jquery簡(jiǎn)單體驗(yàn)

    jquery簡(jiǎn)單體驗(yàn)...
    2007-01-01
  • 在JavaScript中使用開(kāi)平方根的sqrt()方法

    在JavaScript中使用開(kāi)平方根的sqrt()方法

    這篇文章主要介紹了在JavaScript中使用開(kāi)平方根的sqrt()方法,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-06-06
  • JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之集合(Set)

    JavaScript數(shù)據(jù)結(jié)構(gòu)與算法之集合(Set)

    JavaScript集合(set) 可以使用集合對(duì)象 Map、Set 和WeakMap 存儲(chǔ)值和對(duì)象。通過(guò)這些對(duì)象,可以使用鍵或值而非索引來(lái)輕松添加和檢索成員。
    2016-01-01
  • 關(guān)于JavaScript中string 的replace

    關(guān)于JavaScript中string 的replace

    在使用JavaScript對(duì)字符串進(jìn)行處理的時(shí)候我們經(jīng)常會(huì)用到replace方法,很簡(jiǎn)單的一個(gè)方法,以前一直不以為意,直到今天看JavaScript語(yǔ)言精粹的時(shí)候讀到了一個(gè)有趣的小例子的時(shí)候,并不是十分理解,了解了一下replace的用法才明白,原來(lái)replace不像想象中的那么簡(jiǎn)單
    2013-04-04
  • javaScript知識(shí)點(diǎn)總結(jié)(必看篇)

    javaScript知識(shí)點(diǎn)總結(jié)(必看篇)

    下面小編就為大家?guī)?lái)一篇javaScript知識(shí)點(diǎn)總結(jié)(必看篇)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享 給大家,也給的大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • 一文帶你走進(jìn)js數(shù)據(jù)類型與數(shù)據(jù)結(jié)構(gòu)的世界

    一文帶你走進(jìn)js數(shù)據(jù)類型與數(shù)據(jù)結(jié)構(gòu)的世界

    這篇文章主要介紹了js-數(shù)據(jù)類型與數(shù)據(jù)結(jié)構(gòu),文章具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以學(xué)習(xí)一下這篇文章中的內(nèi)容
    2021-08-08
  • JavaScript自定義函數(shù)用法詳解

    JavaScript自定義函數(shù)用法詳解

    本文詳細(xì)講解了JavaScript自定義函數(shù)的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-03-03
  • 讓ie運(yùn)行js時(shí)提示允許阻止內(nèi)容運(yùn)行的解決方法

    讓ie運(yùn)行js時(shí)提示允許阻止內(nèi)容運(yùn)行的解決方法

    這個(gè)問(wèn)題一般是因?yàn)榫W(wǎng)頁(yè)中使用了一些js代碼,而ie的默認(rèn)安全級(jí)別過(guò)高導(dǎo)致運(yùn)行js時(shí)需要經(jīng)過(guò)準(zhǔn)許才可以。下面是IE的設(shè)置方法。
    2010-10-10
  • 深入理解JavaScript中的對(duì)象復(fù)制(Object Clone)

    深入理解JavaScript中的對(duì)象復(fù)制(Object Clone)

    下面小編就為大家?guī)?lái)一篇深入理解JavaScript中的對(duì)象復(fù)制(Object Clone)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-05-05

最新評(píng)論

古丈县| 桐柏县| 巴林右旗| 克山县| 乌兰浩特市| 湟源县| 宜春市| 德钦县| 普兰店市| 青田县| 池州市| 遂宁市| 萨嘎县| 广饶县| 广西| 衡东县| 洪泽县| 阿图什市| 剑阁县| 安多县| 马公市| 蒙山县| 凌云县| 伊金霍洛旗| 疏勒县| 咸阳市| 多伦县| 仲巴县| 沾化县| 兴和县| 平昌县| 长寿区| 顺平县| 舒兰市| 惠州市| 林州市| 麻城市| 奎屯市| 江阴市| 郸城县| 香河县|