C# 性能测试程序及编写要点
来源:互联网 发布:mac自带修图软件 编辑:程序博客网 时间:2024/05/06 19:14
直接看程序:
class Timing
{
TimeSpan timestart;
TimeSpan duration;
public void Start()
{
GC.Collect();
GC.WaitForPendingFinalizers();
timestart = Process.GetCurrentProcess().TotalProcessorTime;
}
public void Stop()
{
duration = Process.GetCurrentProcess().TotalProcessorTime.Subtract(timestart);
}
public TimeSpan Result { get { return duration; } }
}
class Program
{
static public string BuildSB(int size)
{
StringBuilder strBd = new StringBuilder();
for (int i = 0; i < size; i++)
{
strBd.Append("a");
}
return strBd.ToString();
}
static public string BuildString(int size)
{
string str = "";
for (int i = 0; i < size; i++)
{
str += "i";
}
return str;
}
static void Main(string[] args)
{
Timing t1 = new Timing(), t2 = new Timing();
int size = 50000;
// 测试 BuildSB 的性能
t1.Start();
for (int i = 0; i < 500; i++)
BuildSB(size);
t1.Stop();
// 测试 BuildString 的性能
t2.Start();
BuildString(size);
t2.Stop();
Console.WriteLine(t1.Result);
Console.WriteLine(t2.Result);
Console.Read();
}
}
结果如下:
00:00:00.2343750
00:00:00.2656250
可以看出,使用BuildSB方法 500遍 和使用BuildString方法 1 遍的时间差不多。
红色部分,用来测试代码性能。其中几个要点:
1、在 Timing.start() 中,先设置起始时间;
2、在 Timing.start() 中,要先把垃圾回收一遍,并且把 垃圾回收的线程挂起,因为系统垃圾回收的发生时间是不确定的,会影响测试的结果。
3、我们用的是 Process.GetCurrentProcess().TotalProcessorTime 来进行时间统计,实际C#代码性能测试还可以使用 StopWatch、 UserProcessorTime。建议用 TotalProcessorTime。因为,StopWatch 统计的还包括“ 上屏”时间,比如说在 控制台中打印的时间,而不仅仅是 CPU处理代码的时间; 而UserProcessorTime 统计的是 CPU用户时间,没有统计CPU内核时间。TotalProcessorTime 统计的是CPU的用户时间和内核时间的总和。
- C# 性能测试程序及编写要点
- C#代码性能测试程序编写要点
- 并发性能测试程序编写
- 性能测试分析方法及要点
- 测试要点的编写
- 淘宝性能测试要点
- 前端性能测试要点
- 淘宝性能测试要点
- 淘宝性能测试要点
- 淘宝性能测试要点
- 淘宝性能测试要点
- 性能测试要点
- 程序性能分析及性能测试
- 程序性能分析及性能测试
- linux按键驱动编写及测试程序
- 测试用例编写要点
- 编写服务端程序的要点
- Delphi编写数据库程序要点
- 配置oracle监听
- 筛法计算欧拉函数
- Tomcat 配置Https 详解
- 读写分离的作用
- 线程中使用UpdateData出错解决方法(转)
- C# 性能测试程序及编写要点
- 波浪过程下载Loading动画
- Palindrome Linked List
- Android Security框架
- [心得]5分钟读3本书
- HTML5学习之五嵌套列表、自定义列表
- 按enter键是否触发提交表单
- mybatis做like模糊查询
- 1007. 素数对猜想 (20)