成人免费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

程序員技術數據

2017-11-30 12:23:55

IO性能RAID

2009-12-16 13:02:39

路由器測試

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技術棧公眾號

主站蜘蛛池模板: 狠狠的日| 一本一道久久a久久精品综合 | 欧美精品一区三区 | 羞羞网站在线观看 | 日本午夜在线视频 | 国产精品视频播放 | 91高清在线观看 | 在线观看第一页 | 国产91在线精品 | 81精品国产乱码久久久久久 | 欧美日韩视频在线 | 久久综合激情 | 国产精品一区二区欧美黑人喷潮水 | 免费观看一级特黄欧美大片 | 亚洲精品久久久 | 黄片毛片| 亚洲欧美激情精品一区二区 | 久久久久99 | 精品国产一区二区三区久久久久久 | 久久亚洲精品国产精品紫薇 | 综合国产| 一区二区久久 | 国产精品成人国产乱一区 | 久久久精品一区二区三区 | 91观看| 日本电影一区二区 | 日韩中文字幕一区二区三区 | 国产精品一区二区三区在线 | 日韩超碰在线 | 久久久久成人精品 | 综合久久99 | 欧美亚洲视频在线观看 | 亚洲欧美综合 | 91精品国产91久久久久青草 | 久久99精品久久久97夜夜嗨 | 日韩视频国产 | 亚洲精品乱码久久久久久按摩观 | 亚洲电影专区 | 一区二区三区欧美 | 欧美精品一区二区三区在线 | 亚洲视频一区二区 |