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

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

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
        博客園  :: 首頁  :: 新隨筆  :: 聯系 :: 訂閱 訂閱  :: 管理

      注意Activator.CreateInstance兩個重載方法的性能

      Posted on 2013-06-30 22:44  faib  閱讀(4824)  評論(1)    收藏  舉報

      今天擴展一個Type的擴展方法New:

              public static object New(this Type type, params object[] args)
              {
                  Guard.ArgumentNull(type, "type");
                  return Activator.CreateInstance(type, args);
              }

      然后想到了測試一下其性能,所以就和直接使用Activator.CreateInstance方法作一下比較:

              public void TestCreateInstance()
              {
                  Console.WriteLine(TimeWatcher.Watch(() =>
                      {
                          for (var i = 0; i < 10000; i++)
                          {
                              var o = Activator.CreateInstance(typeof(TestSerializeClass1));
                          }
                      }));
                  Console.WriteLine(TimeWatcher.Watch(() =>
                  {
                      for (var i = 0; i < 10000; i++)
                      {
                          var o = typeof(TestSerializeClass1).New();
                      }
                  }));
              }

      這似乎是多此一舉的無用測試,卻著實使我大吃一驚!

      00:00:00.0015076
      00:00:00.0104130
       
      為什么發生了如此大的變化,不就是沒有指定第二個參數么!!
      使用Reflector查看Activator.CreateInstance(Type type) 和 Activator.CreateInstance(Type type, params object[] args) 方法,發現它們的實現都不一樣,但具體慢在什么地方,暫時還沒有時間去分析。
      因此,在寫公共類庫的時候,性能測試是必須的,尤其是使用反射的情況下,更是要注意這樣的陷阱。
       
      修改后的New方法如下:
              public static object New(this Type type, params object[] args)
              {
                  Guard.ArgumentNull(type, "type");
                  if (args == null || args.Length == 0)
                  {
                      return Activator.CreateInstance(type);
                  }
      
                  return Activator.CreateInstance(type, args);
              }

      再次測試的時間如下:

      00:00:00.0016531
      00:00:00.0020176
       
      但還是有一點點的影響,不過比起之前已經可以忽略不計了。
      主站蜘蛛池模板: 在线中文字幕国产一区| 国产久免费热视频在线观看| 女人喷水高潮时的视频网站| 美女爽到高潮嗷嗷嗷叫免费网站| 泗水县| 边添小泬边狠狠躁视频| 国产精品天天看天天狠| 亚洲日本一区二区三区在线播放 | 公天天吃我奶躁我的在线观看| 国产亚洲精品自在久久蜜TV| 濮阳县| 特级做a爰片毛片免费看无码| 亚洲自拍精品视频在线| 久久久久亚洲AV成人片一区| 国产成人精品午夜福利在线观看| 国产在线一区二区在线视频| 国产av一区二区三区久久| 大香伊蕉在人线国产免费| 亚洲韩国精品无码一区二区三区 | 亚洲天堂av免费在线看| 亚洲精中文字幕二区三区| 日韩人妻一区中文字幕| 激情文学一区二区国产区| 大香伊蕉在人线国产免费| 精品人妻免费看一区二区三区| 国产毛片三区二区一区| 亚洲美免无码中文字幕在线| 中文字幕亚洲综合久久| 国产欧美一区二区精品性色| 久草热8精品视频在线观看| 建水县| 日本一区二区三本视频在线观看| 中文字幕亚洲人妻系列| 国产成人a在线观看视频| AV最新高清无码专区| 国产av中文字幕精品| 樱花影院电视剧免费| 国产精品第一页一区二区| 高清自拍亚洲精品二区| a级国产乱理伦片在线观看al| 国产美女被遭强高潮免费一视频 |