Chinaunix首页 | 论坛 | 博客
  • 博客访问: 112884
  • 博文数量: 106
  • 博客积分: 2025
  • 博客等级: 大尉
  • 技术积分: 1165
  • 用 户 组: 普通用户
  • 注册时间: 2012-03-06 12:51
文章分类

全部博文(106)

文章存档

2012年(106)

我的朋友

分类: C/C++

2012-05-08 01:40:35

测试代码运算时间

法一

#include
#include
using namespace std;
int main()
{
time_t begin,end;
begin=clock();
//your code
end=clock();
cout<<"runtime: "<}

法二:用DatatimeTmeSpan

在要测量的代码前后加上2DateTime.Now2者相减,得到一个TmeSpan

DateTime d = DateTime.Now;

for (int i = 0; i < 1000; i++)

{

++i;

}

Console.WriteLine(DateTime.Now - d);

法三:用Stopwatch,简单,明了,精确。

// 使用 StopWatch进行测量

Stopwatch sw = new Stopwatch();

sw.Start();

for (int i = 0; i < 1000; i++) { ++i; }

sw.Stop();

Console.WriteLine(sw.Elapsed);

StopWatch 几个关键属性和方法。
Elapsed
:获取当前实例测量得出的总运行时间。在测试期间或者结束时均可获取。
IsRunning
: 获取一个指示 Stopwatch 计时器是否在运行的值。
Start
: 开始或继续测量某个时间间隔的运行时间。 多次调用 Start 前,需要使用 Reset 重置,否则会累加多次测量结果。
Stop
: 停止测量某个时间间隔的运行时间。
Reset
: 停止时间间隔测量,并将运行时间重置为零。

法四:

使用QueryPerformanceFrequency函数和QueryPerformanceCounter函数,这个比较麻烦,还用到了Interop

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();

}

}

阅读(260) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~