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

使用console進行性能測試

 更新時間:2015年04月27日 10:23:11   投稿:hebedich  
各大瀏覽器內(nèi)置的開發(fā)工具,都提供了一個console對象。它主要有兩個作用:顯示網(wǎng)頁代碼運行時的錯誤信息。提供了一個命令行接口,用來與網(wǎng)頁代碼互動。下面我們就來詳細研究下如何使用console進行性能測試。

對于前端開發(fā)人員,在開發(fā)過程中經(jīng)常需要監(jiān)控某些表達式或變量的值,如果使用用 debugger 會顯得過于笨重,最常用的方法是會將值輸出到控制臺上方便調(diào)試。

最常用的語句就是console.log(expression)了。

從早前一道阿里實習(xí)生招聘筆試題目入手:

function f1() {
  console.time('time span');
}
function f2() {
  console.timeEnd('time span');
}
setTimeout(f1, 100);
setTimeout(f2, 200);

function waitForMs(n) {
  var now = Date.now();
    while (Date.now() - now < n) {
  }
}
waitForMs(500);//time span: 0ms

我們先說說關(guān)于console的高級操作,最后在一起分析這道題目。

trace

console.trace()用來追蹤函數(shù)的調(diào)用過程。

在大型項目尤其是框架開發(fā)中,函數(shù)的調(diào)用軌跡可以十分復(fù)雜,console.trace()方法可以將函數(shù)的被調(diào)用過程清楚地輸出到控制臺上。

function tracer(a) {
   console.trace();
   return a;
}

function foo(a) {
   return bar(a);
}

function bar(a) {
   return tracer(a);
}

var a = foo('tracer');

table

使用console將對象以表格呈現(xiàn)

可將傳入的對象,或數(shù)組以表格形式輸出,相比傳統(tǒng)樹形輸出,這種輸出方案更適合內(nèi)部元素排列整齊的對象或數(shù)組,不然可能會出現(xiàn)很多的 undefined。

    var people = {
    flora: {
      name: 'floraLam',
      age: '12'
    },
    john: {
      name: 'johnMa',
      age: '45'
    },
    ray:{
      name:'rayGuo',
      age:'22'
    }
  };

  console.table(people);

火狐的控制臺:

time timeEnd

計算程序的執(zhí)行時間

可以將成對的console.time()和console.timeEnd()之間代碼的運行時間輸出到控制臺上

console.time('計時器');
for (var i = 0; i < 1000; i++) {
   for (var j = 0; j < 1000; j++) {}
}
console.timeEnd('計時器');

以上代碼計算console.time('計時器');和console.timeEnd('計時器');之間的代碼塊所需要的事件。

profile

使用console測試程序性能

開發(fā)中,我們常常要評估段代碼或是某個函數(shù)的性能。在函數(shù)中手動打印時間固然可以,但顯得不夠靈活而且有誤差。借助控制臺以及console.profile()方法我們可以很方便地監(jiān)控運行性能。

function parent() {
   for (var i = 0; i < 10000; i++) {
      childA()
   }
}
function childA(j) {
   for (var i = 0; i < j; i++) {}
}
console.profile('性能分析');
parent();
console.profileEnd();

上述代碼計算console.profile('性能分析');和console.profileEnd();之間,代碼塊中涉及的函數(shù)的運行效率。

現(xiàn)在說回筆試題目

題目考察應(yīng)聘者對console.time的了解和js單線程的理解。

console.time()語句和console.timeEnd()語句是用來對程序的執(zhí)行進行計時的。

setTimeout()接受兩個參數(shù),第一個是回調(diào)函數(shù),第二個是推遲執(zhí)行的毫秒數(shù)。setTimeout()只是將事件插入了"任務(wù)隊列",必須等到當(dāng)前代碼(執(zhí)行棧)執(zhí)行完,主線程才會去執(zhí)行它指定的回調(diào)函數(shù)。

因為f1和f2被都setTimeout事先設(shè)置的定時器裝到一個事件隊列里面。本來 f1應(yīng)該在100ms后就要執(zhí)行了,但是因為waitForMs占用了線程,而執(zhí)行JavaScript是單線程的,所以就沒辦法在100ms后執(zhí)行那個 f1,所以需要等500ms等waitForMs執(zhí)行完,然后在執(zhí)行f1和f2,這時候f1和f2就幾乎同時執(zhí)行了。

以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。

相關(guān)文章

  • js中apply和call的理解與使用方法

    js中apply和call的理解與使用方法

    這篇文章主要給大家介紹了關(guān)于js中apply和call的理解與使用方法,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用js具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • 用js格式化金額可設(shè)置保留的小數(shù)位數(shù)

    用js格式化金額可設(shè)置保留的小數(shù)位數(shù)

    這篇文章主要介紹了如何用js格式化金額并設(shè)置保留的小數(shù)位數(shù),需要的朋友可以參考下
    2014-05-05
  • JavaScript通如何過RGraph實現(xiàn)動態(tài)儀表盤

    JavaScript通如何過RGraph實現(xiàn)動態(tài)儀表盤

    這篇文章主要介紹了JavaScript通如何過RGraph實現(xiàn)動態(tài)儀表盤,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • 15位和18位身份證JS校驗的簡單實例

    15位和18位身份證JS校驗的簡單實例

    下面小編就為大家?guī)硪黄?5位和18位身份證JS校驗的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • JavaScript如何實現(xiàn)對數(shù)字保留兩位小數(shù)一位自動補零

    JavaScript如何實現(xiàn)對數(shù)字保留兩位小數(shù)一位自動補零

    本文給大家介紹基于JavaScript如何實現(xiàn)對數(shù)字保留兩位小數(shù)一位自動補零的實例代碼,代碼簡單易懂,感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • underscore之function_動力節(jié)點Java學(xué)院整理

    underscore之function_動力節(jié)點Java學(xué)院整理

    因為underscore本來就是為了充分發(fā)揮JavaScript的函數(shù)式編程特性,所以也提供了大量JavaScript本身沒有的高階函數(shù)。本文重點給大家介紹underscore之function知識,感興趣的的朋友一起學(xué)習(xí)吧
    2017-07-07
  • js前端解決跨域的八種實現(xiàn)方案

    js前端解決跨域的八種實現(xiàn)方案

    這篇文章主要介紹了js前端解決跨域的八種實現(xiàn)方案,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • JS中比較兩個Object數(shù)組是否相等方法實例

    JS中比較兩個Object數(shù)組是否相等方法實例

    在本篇文章里小編給大家整理的是一篇關(guān)于JS中比較兩個Object數(shù)組是否相等方法實例內(nèi)容,有需要的朋友們學(xué)習(xí)下。
    2019-11-11
  • js獲取對象中所有屬性的四種方法

    js獲取對象中所有屬性的四種方法

    這篇文章主要給大家介紹了關(guān)于js獲取對象中所有屬性的四種方法,在JavaScript 中,我們可以通過不同的方法獲取對象的屬性,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-09-09
  • JS獲取鼠標(biāo)坐標(biāo)的實例方法

    JS獲取鼠標(biāo)坐標(biāo)的實例方法

    這篇文章介紹了JS獲取鼠標(biāo)坐標(biāo)的實例方法,有需要的朋友可以參考一下
    2013-07-07

最新評論

潜山县| 陇南市| 陇川县| 普定县| 龙泉市| 宁城县| 宜丰县| 屯留县| 武威市| 正镶白旗| 马关县| 三江| 桐梓县| 洛南县| 鄱阳县| 卢氏县| 浮梁县| 瑞昌市| 修文县| 罗平县| 九龙坡区| 昌吉市| 融水| 确山县| 潼关县| 祁东县| 文成县| 墨江| 德庆县| 永修县| 宝清县| 沙田区| 乐至县| 安新县| 仁怀市| 惠安县| 本溪| 长垣县| 东城区| 石城县| 当阳市|