异常处理性能测试
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { int cnt = 1000; StringBuilder sb = new StringBuilder(); string msg = ""; Stopwatch w = new Stopwatch(); w.Start(); int a = 10; for (int i = 0; i <= cnt; i++) { Int32.TryParse("a", out a); } w.Stop(); msg = string.Format("Int32.TryParse {0}次:{1}毫秒", cnt, w.ElapsedMilliseconds); sb.AppendLine(msg); w.Reset(); w.Start(); for (int i = 0; i <= cnt; i++) { try { int a2 = 1; } catch (Exception e) { } finally { } } w.Stop(); msg = string.Format("try catch中执行 a2 = 1 {0}次:{1}毫秒", cnt, w.ElapsedMilliseconds); sb.AppendLine(msg); w.Reset(); w.Start(); for (int i = 0; i <= cnt; i++) { try { Int32.TryParse("a", out a); } catch (Exception e) { } finally { } } w.Stop(); msg = string.Format("try catch中执行 Int32.TryParse无异常 {0}次:{1}毫秒", cnt, w.ElapsedMilliseconds); sb.AppendLine(msg); w.Reset(); w.Start(); for (int i = 0; i <= cnt; i++) { try { Int32.Parse("a"); } catch (Exception e) { } finally { } } w.Stop(); msg = string.Format("try catch中执行 Int32.Parse有抛异常{0}次:{1}毫秒", cnt, w.ElapsedMilliseconds); sb.AppendLine(msg); w.Reset(); w.Start(); for (int i = 0; i <= cnt; i++) { try { throw new Exception("1"); } catch (Exception e) { } finally { } } w.Stop(); msg = string.Format("try catch中执行 throw new Exception有抛异常{0}次:{1}毫秒", cnt, w.ElapsedMilliseconds); sb.AppendLine(msg); Console.WriteLine(sb.ToString()); Console.Read(); } } }
输出结果:
Int32.TryParse 1000次:0毫秒
try catch中执行 a2 = 1 1000次:0毫秒
try catch中执行 Int32.TryParse无异常 1000次:0毫秒
try catch中执行 Int32.Parse有抛异常1000次:6276毫秒
try catch中执行 throw new Exception有抛异常1000次:4904毫秒
结论:
1. C#中使用 TryParse性能较好。
2. 一次异常处理大约耗时5毫秒。