<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Javascript性能分析——工具(YUI Profiler)上

      最近看完了《高性能JavaScript》,打算寫一系列的文章把知識點鞏固下,盡管工具介紹在書的最后,但是為了能在后續文章中有個更為直觀的認識,我打算先介紹下工具,這樣在演示代碼的時候可以看到性能分析數據更加理解深刻。

      YUI Profiler 官方地址

      介紹

      YUI是個很贊的工具,它提供了方法(Profiling Functions),構造函數(Profiling Constructors)和對象(Profiling Objects)的分析以及其它的一些輔助幫助。

      如果你想分析上訴某種東東,需要先向YUI Profiler中注冊那個東東,如YAHOO.tool.Profiler.registerFunction //分析方法

      YAHOO.tool.Profiler.registerConstructor//分析構造函數

      YAHOO.tool.Profiler.registerObject//分析對象

      注冊晚之后便可以通過

      getAverage —— 得到平均執行時間
      getCallCount —— 被調用次數
      getMax(name) ——最大執行時間
      getMin(name) ——最小執行時間
      getFunctionReport(name) —— 上訴幾個方法的報告

       

      如何用呢?

      JavaScript在不同瀏覽器里的字符串拼接的性能消耗是不同的,下面我們看看它在Chrome 18和IE10里的不同表現。

      function UIDraw(){
      }
      UIDraw.prototype.Draw = function(){
      for (var i = 1000; i >= 0; i--) {
      var test_box = document.getElementById("test_box");
      test_box.innerHTML += '<span>'+ i + '</span>';
      };
      }



      測試的對象很簡單,就是找到Id為test_box的HTML對象,循環拼接1000次字符串,添加到該對象中。

      YUI測試代碼:

      //2個待測試對象
      var ui1 = new UIDraw();
      var ui2 = new UIDraw();

      //將UIDraw對象注冊到YUI Profiler中
      YAHOO.tool.Profiler.registerConstructor("UIDraw", window);
      //分別執行2個對象的方法

      ui1.Draw();
      ui2.Draw();

      //得到反饋報告并輸出
      var report = YAHOO.tool.Profiler.getFunctionReport("UIDraw.prototype.Draw");
      console.log(report)


      IE10的表現比我預計的慘烈:


      其中,avg就是平均執行時間,calls是被調用次數,max最大執行時間,min最小執行時間

       

      再來看看Chrome18的表現:

      比IE10少消耗約1/3的時間。

       

      因為我調用的注冊方法是YAHOO.tool.Profiler.registerConstructor,它對所UIDraw對象進行測試,如果是YAHOO.tool.Profiler.registerObject的話,那么僅對被注冊的對象進行測試,如YAHOO.tool.Profiler.registerObject("ui1");那么不在對ui2的性能做測試了,后續代碼也需要做修改,將var report = YAHOO.tool.Profiler.getFunctionReport("UIDraw.prototype.Draw");改為var report = YAHOO.tool.Profiler.getFunctionReport("ui1.Draw");

      代碼如下:

      var ui1 = new UIDraw();
      var ui2 = new UIDraw();
      YAHOO.tool.Profiler.registerObject("ui1");
      ui1.Draw();
      ui2.Draw();
      var report = YAHOO.tool.Profiler.getFunctionReport("ui1.Draw");
      console.log(report)

       

      大家不妨自己動手實踐下。

       

      posted @ 2012-04-03 00:06  Miser  閱讀(3709)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 久久人人97超碰精品| 亚洲一国产一区二区三区| 国色精品卡一卡2卡3卡4卡在线| 中文字幕日韩精品无码内射| 亚洲av伊人久久综合性色| 中文字幕第一页国产精品| 一区二区三区放荡人妻| 国产av中文字幕精品| 国产一区二区三区尤物视频| 成人深夜节目在线观看| 99精品国产成人一区二区| 亚洲欧洲日韩国内精品| 毛多水多高潮高清视频| 丰满的少妇被猛烈进入白浆| 激情综合色五月六月婷婷| 国产99精品成人午夜在线| 亚洲精品一区二区区别| 成av免费大片黄在线观看| 免费国产拍久久受拍久久| 亚洲午夜精品毛片成人播放| 亚洲人成人网站色www| 亚洲熟妇在线视频观看| 亚洲av一本二本三本| 欧美午夜理伦三级在线观看| 人妻av无码系列一区二区三区| 特级毛片a片久久久久久| 精品国产中文字幕懂色| 国产喷水1区2区3区咪咪爱av| 大尺度国产一区二区视频| 亚洲精品一区二区天堂| 99热这里有精品| 天堂av网一区二区三区| 免费无码一区无码东京热| 亚洲欧美日韩精品色xxx| 欧美视频二区欧美影视| 精品中文人妻在线不卡| 免费萌白酱国产一区二区三区| 亚洲欧洲av一区二区久久| 国产欧美日韩亚洲一区二区三区| 人妻少妇无码精品专区| 亚洲国产成人无码av在线影院 |