C#异常处理性能测试
异常处理性能测试
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 = ;
StringBuilder sb = new StringBuilder();
string msg = "";
Stopwatch w = new Stopwatch();
w.Start();
int a = ;
for (int i = ; 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 = ; i <= cnt; i++)
{
try
{
int a2 = ;
}
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 = ; 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 = ; 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 = ; i <= cnt; i++)
{
try
{
throw new Exception("");
}
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毫秒。
C#异常处理性能测试的更多相关文章
- JMeter学习-022-JMeter 分布式测试(性能测试大并发、远程启动解决方案)
在使用 JMeter 进行性能测试时,难免遇到要求并发请求数比较的场景,此时单台测试机的配置(CPU.内存.带宽等)可能无法支持此性能测试场景.因而,此时 JMeter 提供的分布式测试功能就有了用武 ...
- 插入排序的性能测试对比(C与C++实现)
一.概述: [标题]学生成绩管理的设计与实现 [开发语言]C.C++ [主要技术]结构体.STL [基本功能]实现对学生成绩类的基本操作:增加.删除.查询.排序 [测试数据]功能测试:按提示输入5组正 ...
- [转].NET 性能测试工具 -- 事件跟踪器(ETW)
.NET 性能测试工具 -- 事件跟踪器(ETW) 内容预告: Windows内置工具(性能计数器) 事件跟踪器(WPT,PerfMoniter,PerfView,自定义ETW) 时间分析 内存分配分 ...
- Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通
Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通Selenium接口性能自动化测试基础部分:分层自动化思想Slenium介绍Selenium1.0/2.0/3.0Slenium R ...
- dubbo超时重试和异常处理
dubbo超时重试和异常处理 dubbo超时重试和异常处理 参考: https://www.cnblogs.com/ASPNET2008/p/7292472.html https://www.tuic ...
- WPF MVVM UI分离之《交互与数据分离》 基础才是重中之重~delegate里的Invoke和BeginInvoke 将不确定变为确定系列~目录(“机器最能证明一切”) 爱上MVC3系列~全局异常处理与异常日志 基础才是重中之重~lock和monitor的区别 将不确定变成确定~我想监视我的对象,如果是某个值,就叫另一些方法自动运行 将不确定变成确定~LINQ DBML模型可以对
WPF MVVM UI分离之<交互与数据分离> 在我们使用WPF过程中,不可避免并且超级喜欢使用MVVM框架. 那么,使用MVVM的出发点是视觉与业务逻辑分离,即UI与数据分离 诸如下 ...
- 性能测试——记XX银行保全项目性能问题分析优化
记XX银行保全项目性能问题分析优化 数据库问题也许是大部分性能问题的关注点,但是JAVA应用与数据库交互的关节,JDBC 就像是我们人体的上半身跟下半身的腰椎,支持上半身,协调下半身运动的重要支撑点. ...
- asyncio与gevent并发性能测试
asyncio与gevent并发性能测试 在对网站进行扫描或者暴破时需要对网站进行高并发操作,然而requests+concurrent多线程性能上不太理想,了解到python用得比较多的并发库有as ...
- 9.2专项测试-Android性能测试黑盒分析-1
1. 专项测试 业务测试:面向新需求 回归测试:面向已交付需求 专项测试:面向非功能需求的各类质量唯独特征 表现 用户维度 技术维度 崩溃 crash,弱网 检测崩溃1.某个页面,因为研发处理不合适, ...
随机推荐
- python学习笔记(2)
1.for循环 用户按照顺序循环可迭代对象中的内容. li = [11,22,33,44] for i in li: print i for循环的else 此功能目前只有for循环里面有发现. 具体条 ...
- 搭建高可用MongoDB集群(一):配置MongoDB
在大数据的时代,传统的关系型数据库要能更高的服务必须要解决高并发读写.海量数据高效存储.高可扩展性和高可用性这些难题.不过就是因为这些问题Nosql诞生了. NOSQL有这些优势: 大数据量,可以通过 ...
- 洛谷 P1026 统计单词个数 Label:dp
题目描述 给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入,且保证每行一定为20个).要求将此字母串分成k份(1<k<=40),且每份中包含的单 ...
- js性能优化-事件委托
js性能优化-事件委托 考虑一个列表,在li的数量非常少的时候,为每一个li添加事件侦听当然不会存在太多性能方面的问题,但是当列表非常的长,长到上百上千甚至上万的时候(当然只是一个解释,实际工作中很少 ...
- [MySQL] B+树索引
B+树是一种经典的数据结构,由平衡树和二叉查找树结合产生,它是为磁盘或其它直接存取辅助设备而设计的一种平衡查找树,在B+树中,所有的记录节点都是按键值大小顺序存放在同一层的叶节点中,叶节点间用指针相连 ...
- DAO 开发模式的几个类
1, vo --> Emp.java 包括getter setter方法 2, dbc --> DatabaseConnection.java 数据库打开关闭 3, ...
- webform 复合控件
RadioButtonList 单选按钮列表 属性:RepeatColumns 用于布局项的列数(每一行的个数) RepeatDirection 选择Vertical,纵向排列:选择Horizont ...
- java 编码
编码和解码:无论是解码还是编码都是针对码表来讲的. 编码:将能看懂得字符变为我们看不懂的码值. 字符串--->字节数组 String类的getBytes() 方法进行编码,将字符串,转为对映的二 ...
- Java抽象类与接口的区别
很多常见的面试题都会出诸如抽象类和接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题.本文我们将仔细讨论这些话题. 在讨论它们之间的不同点之前,我们先看看抽象类.接口各自的特性. ...
- 如何解决google ping不通的问题。
1. 用http://ping.chinaz.com/ ping google的域名. 2. 会ping出很多ip,但是chinaz用的是测试网点去ping的,不是你本地宽带, 所以把ping出ip拷 ...