C#计算代码执行时间
2013-03-21 11:09
288 查看
在一些测试工作时我们需要获得高精度的代码执行时间以比较其效率。最近遇到一个模块其执行时间非常短,但是调用频率非常高。精确计算其运算时间对于提高程序整体效率来说非常重要。
在我刚刚接触.Net时,也曾经想要测试一下自己写的程序的运行时间,当时我使用的是将两个DateTime.Now相减的笨方法,呵呵。后来知道使用Environment.TickCount,对于一般的测试来说就足够了。但是它对于高精度测试就没什么办法,经常是返回个0了事。对于高精度测试我们应当使用QueryPerformanceFrequency函数和QueryPerformanceCounter函数。通过它们可以获得比Environment.TickCount更高的精确度。实际上Environment.TickCount就是在调用QueryPerformanceFrequency函数和QueryPerformanceCounter函数。
下面是我使用的代码:
using System;
class Class1
using System;
class Class1
{
[System.Runtime.InteropServices.DllImport ("Kernel32.dll")]
static extern bool QueryPerformanceCounter(ref long count);
[System.Runtime.InteropServices.DllImport ("Kernel32.dll")]
static extern bool QueryPerformanceFrequency(ref long count);
[STAThread]
static void Main(string[] args)
{
long count = 0;
long count1 = 0;
long freq = 0;
double result = 0;
QueryPerformanceFrequency(ref freq);
QueryPerformanceCounter(ref count);
//开始的时候没有这层循环,所得数据浮动很大,添加这层循环来使得结果更加平均
for (int i=0; i<500; i++)
{
//需要测试的模块
}
QueryPerformanceCounter(ref count1);
count = count1-count;
result = (double)(count)/(double)freq;
Console.WriteLine("耗时: {0} 秒", result);
Console.ReadLine();
}
}
{
Stopwatch myWatch =
new
Stopwatch();
myWatch.Start();
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("just test" +
i);
}
myWatch.Stop();
long myUseTime =
myWatch.ElapsedMilliseconds;
MessageBox.Show("執行時間: " + myUseTime.ToString() + " ms");
}
在我刚刚接触.Net时,也曾经想要测试一下自己写的程序的运行时间,当时我使用的是将两个DateTime.Now相减的笨方法,呵呵。后来知道使用Environment.TickCount,对于一般的测试来说就足够了。但是它对于高精度测试就没什么办法,经常是返回个0了事。对于高精度测试我们应当使用QueryPerformanceFrequency函数和QueryPerformanceCounter函数。通过它们可以获得比Environment.TickCount更高的精确度。实际上Environment.TickCount就是在调用QueryPerformanceFrequency函数和QueryPerformanceCounter函数。
下面是我使用的代码:
using System;
class Class1
using System;
class Class1
{
[System.Runtime.InteropServices.DllImport ("Kernel32.dll")]
static extern bool QueryPerformanceCounter(ref long count);
[System.Runtime.InteropServices.DllImport ("Kernel32.dll")]
static extern bool QueryPerformanceFrequency(ref long count);
[STAThread]
static void Main(string[] args)
{
long count = 0;
long count1 = 0;
long freq = 0;
double result = 0;
QueryPerformanceFrequency(ref freq);
QueryPerformanceCounter(ref count);
//开始的时候没有这层循环,所得数据浮动很大,添加这层循环来使得结果更加平均
for (int i=0; i<500; i++)
{
//需要测试的模块
}
QueryPerformanceCounter(ref count1);
count = count1-count;
result = (double)(count)/(double)freq;
Console.WriteLine("耗时: {0} 秒", result);
Console.ReadLine();
}
}
C#中的秒表 计算程序运行了多长时间 System.Diagnostics.Stopwatch
private void button1_Click(object sender, EventArgs e){
Stopwatch myWatch =
new
Stopwatch();
myWatch.Start();
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("just test" +
i);
}
myWatch.Stop();
long myUseTime =
myWatch.ElapsedMilliseconds;
MessageBox.Show("執行時間: " + myUseTime.ToString() + " ms");
}
相关文章推荐
- C# 计算代码执行时间
- 计算c#代码执行时间
- 【C# 计算代码的执行时间】
- C# 计算一段代码执行的时间函数
- C#计算代码执行时间的方法
- C#计算代码执行时间的方法
- 【C# 计算代码的执行时间】
- c# 计算程序执行时间,计算一段代码执行所用的时间,测试效率
- C#如何计算代码执行时间
- php计算某段代码执行时间
- php 页面执行时间计算代码
- c# 计算程序执行时间方法
- C#计算函数执行的时间
- 一个计算周次和本周时间范围的代码(c#)
- C#计算一段代码的运行时间
- C#.Net Mvc运营监控,计算方法/接口/action/页面执行时间
- C#学习(7):检测代码执行时间
- c/c++ 计算代码执行时间
- 计算指令执行时间代码
- CodeIgniter类库之Benchmarking Class ,计算代码的执行时间