首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

计算程序运算时间有关问题

2012-04-01 
计算程序运算时间问题下面代码功能是两种实现0~n不重复随机数获得方法,后来想比较下哪个更快 结果死活出不

计算程序运算时间问题
下面代码功能是两种实现0~n不重复随机数获得方法,后来想比较下哪个更快 结果死活出不来结果了,不知道为什么,请大家伙帮看看,谢谢!
#include "stdafx.h"
#include "stdlib.h"
#include "stdio.h"
#include "time.h"
#include "windows.h"
#define TIMES 100
void swap(int& a, int& b)
{
a = a + b;
b = a - b;
a = a - b;
}

int main(int argc, char* argv[])
{
printf("MAX_RAND=%u\n", RAND_MAX);
srand((unsigned int)time(NULL));
DWORD inter = GetTickCount();
int a[TIMES];
int i = 0;
for (; i < TIMES; ++i) 
{
a[i] = i;
}
for (i=TIMES; i > 0; --i) 
{
swap(a[i], a[rand()%TIMES]);
}
inter = GetTickCount() - inter;
printf("inter=%u\n================\n", inter);
DWORD inter2 = ::GetTickCount();
int b[TIMES] = {0};
int m;
for (i=0; i<TIMES; i++)
{
while(b[m=rand()%TIMES]);
b[m] = i;
}
inter2 = ::GetTickCount() - inter2;
printf("inter2=%u\n================\n", inter2);
return 0;
}

[解决办法]
可以用clock函数计时,可以得到
[解决办法]
结果是0是么?你那个循环耗费的时间太少了,没有达到GetTickCount的精度

GetTickCount在inter多核处理器上的精度是15.625 ms

你可以用QueryPerformanceCounter

你搜一下高精度计时
[解决办法]

QueryPerformanceCounter
QueryPerformanceFrequency
试试

热点排行