成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

關于TryCatch捕獲錯誤的簡單性能測試

開發 測試
今天忽然心血來潮就自己寫了個Demo測試,因為曾經自己寫過一篇文章提到不要濫用TryCatch來捕獲已知的錯誤,卻沒有用事例佐證過,當然結果也是如預期一般。詳細請看下文

一直以來都很好奇TryCatch捕獲一個錯誤會對性能有多大的損耗,有的人說差異是倍數級的,有的人說差異不大,今天忽然心血來潮就自己寫了個Demo測試,因為曾經自己寫過一篇文章提到不要濫用TryCatch來捕獲已知的錯誤,卻沒有用事例佐證過,當然結果也是如預期一般。

  1. static void Main(string[] args)  
  2.         {  
  3.             int loopCount=100;  
  4.             List<string> strList = new List<string>();  
  5.  
  6.             for (int i = 0; i < loopCount; i++) {  
  7.                 strList.Add("str" + i);  
  8.             }  
  9.             int intTemp = 0;  
  10.  
  11.             Stopwatch sw2 = new Stopwatch();  
  12.             sw2.Start();  
  13.             foreach (string str in strList)  
  14.             {  
  15.                 Console.WriteLine("不用TryCatch");  
  16.                 int.TryParse(str, out intTemp);  
  17.             }  
  18.             sw2.Stop();  
  19.           
  20.  
  21.             Stopwatch sw = new Stopwatch();  
  22.             sw.Start();  
  23.             foreach (string str in strList)  
  24.             {  
  25.                 try 
  26.                 {  
  27.                     Console.WriteLine("這是TryCatch");  
  28.                     intTemp = Convert.ToInt32(str);  
  29.                      
  30.                 }  
  31.                 catch (Exception ex)  
  32.                 {  
  33.                     //異常不做處理  
  34.                 }  
  35.             }  
  36.             sw.Stop();  
  37.             Console.WriteLine("循環次數" + loopCount + "不用TryCatch耗時:" + sw2.ElapsedMilliseconds);  
  38.             Console.WriteLine("循環次數" + loopCount + "這是TryCatch耗時:" + sw.ElapsedMilliseconds);  
  39.  
  40.             Console.WriteLine("按回車鍵退出" );  
  41.             Console.ReadLine();  
  42.         } 

為了直觀地看到每一次轉換是否進行了,所以在每一次轉換前都輸出一次是否用到TryCatch,當loopCount為100時運行結果如下:

而當把loopCount的值加大為10000時輸出結果如下:

不同的運行環境下的耗時結果不一樣,但是兩者之間的耗時差距是很大的

當然了,這樣的測試有點片面,但從測試數據我們足以得到一種信息——不要把可預知的異常放到TryCatch里面讓系統捕獲處理

忽然想到,我這個測試時在轉換錯誤時的測試,那么程序如果不捕獲到異常會怎么樣呢,把代碼改成如下

  1. for (int i = 0; i < loopCount; i++) {  
  2.               strList.Add( i.ToString());  
  3.           } 

運行1000次時結果如下(運行環境不同會出現不同結果,我測試多次都是用TryParse比較耗時,大約多100-300)

而在運行10000次時結果如下:

為了驗證是否因為TryParse和Convert之間有差異,將程序改動后運行1000次結果如下:

10000次運行結果如下:

多次運行發現結果基本相差不大,偶爾會出現不用TryCatch會耗時長很多,這個留待大牛去解釋,但以上測試表明在不出現錯誤的情況下二者的性能損耗差不多,但在出現錯誤的情況下卻相距甚大。

原文鏈接:http://www.cnblogs.com/jasonlwings/archive/2013/03/12/2956649.html

責任編輯:林師授 來源: 博客園
相關推薦

2010-06-11 11:20:18

Linux性能測試工具

2021-11-03 12:37:23

微軟補丁Windows 11

2010-04-12 10:54:13

Oracle性能測試

2019-09-15 19:17:02

性能測試

2023-01-20 11:51:40

性能測試系統

2010-12-21 14:08:50

PowerShell

2010-06-07 14:42:47

Linux性能測試工具

2020-09-27 07:48:40

不用try catch

2010-02-02 11:03:23

軟交換設備

2012-04-06 09:41:22

UC協同工具

2020-04-15 16:07:01

程序員技術數據

2009-12-16 13:02:39

路由器測試

2017-11-30 12:23:55

IO性能RAID

2010-02-26 10:14:25

WCF全局錯誤捕獲

2017-04-26 15:30:31

PHP錯誤機制

2012-02-22 14:18:06

測試測試人員

2022-12-15 08:00:38

JavaScript錯誤性能

2022-11-17 08:00:18

JavaScript錯誤性能

2011-08-23 14:33:51

Lua捕獲字符串

2017-08-10 14:04:25

前端JavaScript函數性能
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕一区二区三区乱码在线 | 亚洲成av人片在线观看 | av三级在线观看 | 国产精品午夜电影 | av国产精品 | 欧美中文一区 | 天天干天天操天天爽 | 欧美激情久久久 | 国产精品三级久久久久久电影 | 成人久久18免费网站 | h片在线观看网站 | 亚洲高清成人在线 | 中文字幕第九页 | 成人一级毛片 | 欧美一区二区三区视频在线播放 | 亚洲视频在线观看 | 成人a在线 | 亚洲一区精品在线 | 亚洲精品乱码久久久久久蜜桃 | 国产福利在线播放麻豆 | 亚洲免费三级 | 亚洲日本免费 | 亚洲国产欧美在线人成 | 黄色永久免费 | 成人在线不卡 | 夫妻午夜影院 | 欧美日韩高清 | 亚洲视频一区 | 成人午夜视频在线观看 | 日韩综合在线 | 精品久久久久久久久久久下田 | 美女一级a毛片免费观看97 | 91久久久久久久久久久久久 | 精品视频一区在线 | 91视频网| 日韩美女一区二区三区在线观看 | 免费国产精品久久久久久 | 亚洲一区视频在线 | 99免费在线 | 天天躁日日躁狠狠的躁天龙影院 | 国产精品美女久久久久久免费 |