C# Try/Catch性能测试
来源:互联网 发布:演技知乎' 编辑:程序博客网 时间:2024/06/06 03:46
一、Try/Catch说明
Try-catch 语句包含一个后接一个或多个 catch 子句的 try 块,这些子句指定不同异常的处理程序。
引发异常时,公共语言运行时 (CLR) 查找处理此异常的 catch 语句。如果当前正在执行的方法不包含此类 catch 块,则 CLR 查看调用了当前方法的方法,并以此类推遍历调用堆栈。如果未找到任何 catch 块,则 CLR 向用户显示一条未处理的异常消息,并停止执行程序。
try 块包含可能导致异常的受保护的代码。将执行此块,直至引发异常或其成功完成。
特别说明:
1. 在编写代码过程中,加try/catch块,和不加try/catch快,没有异常的情况下效率是相同的,但是在有异常的时候效率会相当低。
2.对于异常的处理,能自己解决的尽量自己处理,对于处理不了的再用try/catch
3.特别需要考虑的是在有大量循环的语句中,有过多的异常非常影响性能。
二、简单性能测试
以int类型为例
int start = Environment.TickCount;int temp = 0;for (int i = 0; i < 100; i++){ try { temp += i; throw new Exception("抛出异常"); } catch (Exception ex) { }}int end = Environment.TickCount;Console.WriteLine("执行时间:{0}毫秒,{1}秒", (end - start), (end - start) / 1000);
执行结果:
三、在数据类型转换中Parse()和TryParse()的性能对比
int start = Environment.TickCount;string temp = "a15";for (int i = 0; i < 100; i++){ try { // int reuslt = int.Parse(temp); int result = 0; int.TryParse(temp, out result); } catch (Exception ex) { }}int end = Environment.TickCount;Console.WriteLine("执行时间:{0}毫秒,{1}秒", (end - start), (end - start) / 1000);显示结果:
特别说明:
1.在没有异常抛出的情况下,int.Parse()和int.TryParse() 几乎一样
1.在大量循环中进行数据类型转换,如果有很多失败的转换,int.TryPase()的性能优势就提现出来了。
四、空指针异常,性能测试
1.使用catch捕获异常
int start = Environment.TickCount;for (int i = 0; i < 100; i++){ try { Student stu = Student.GetIntance(); stu.ID = i; stu.Name = i.ToString(); } catch (NullReferenceException ex) //捕获空指针异常 { }}int end = Environment.TickCount;Console.WriteLine("执行时间:{0}毫秒,{1}秒", (end - start), (end - start) / 1000);2.写代码时,主动避开可处理的异常
//手动写代码过滤异常Student stu = Student.GetIntance();if (stu != null){ stu.ID = i; stu.Name = i.ToString();}
public class Student{ public int ID { get; set; } public string Name { get; set; } public static Student GetIntance() { return null; }}
特别说明:
1.在使用引用类型的变量的时候,在不确定变量一定为不空的情况下,尽量要自己判断后在使用
2.特别注意是在大量循环处理的过程中。
更多:
C#字符串连接和StringBuilder字符串拼接性能测试
0 0
- C# Try/Catch性能测试
- Try......Catch性能问题
- try catch测试代码
- C#中使用try...catch...是否会影响程序性能
- C#中使用try...catch...是否会影响程序性能
- C#中使用try...catch...是否会影响程序性能
- C# 深度剖析try-catch-finally及其性能影响
- C# try catch finally
- C# try, catch ,finally
- C# --try catch finally
- C# try catch finally
- C# try catch throw
- C#之try-catch
- C# try catch finally
- C# try、catch、finally
- c# try catch 用法
- C# try catch
- try-catch影响性能吗?
- Java double 相乘的小问题记录
- apk安装的时候显示版本号是6.0的修改方法
- 如何同时引入两个jquey版本并不冲突呢
- linux密钥登陆
- 《站在巨著之上谈泛型》-- 第二节:泛型的用武之处
- C# Try/Catch性能测试
- Setting up CocoaPods master repo 一直卡着
- 用实例讲解Spark Sreaming
- eureka主动cancelled instance一个服务,客户端一直重复注册
- [Unity3D]关于Assets资源目录结构管理
- yii AR查询详解
- [C语言][LeetCode][80]Remove Duplicates from Sorted Array II
- 欢迎使用CSDN-markdown编辑器
- Android4.0.3/Android4.2.2 添加 Ethernet