| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1680 人关注过本帖
标题:[求助]同一程序,运行时间不一样
只看楼主 加入收藏
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
 问题点数:0 回复次数:5 
[求助]同一程序,运行时间不一样
写了一个程序,然后测试他运行的时间,发显第二次运行的时间比第一次的少,为什么呢?
还有,在不同的时间,测试同样的数据发现所用的时间也不一样?
搜索更多相关主题的帖子: 运行 时间 数据 
2006-06-24 22:30
Satyr
Rank: 1
等 级:新手上路
帖 子:83
专家分:0
注 册:2006-4-7
收藏
得分:0 
是不是也是第二次比第一次少
是编译器也会走捷径
就象你第一次上QQ5秒
第二次上同样的就会3秒

C++的博大精深让我叹服
2006-06-25 10:11
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

系统的环境比较复杂,有几方面的原因,
首先系统可能当时在后台运行程序,占用了资源,使得你的程序执行收到影响
另外一个比较重要的是Windows(从好像从winnt开始)有一种缓存机制,当第一次运行某个程序时,运行程序的数据要加载到内存中,但退出这个程序后,加载到内存中的某些数据并不会消失,而是会作为系统缓存继续存在。因此当你第二次运行时会感受到程序的载入速度比第一次会快一些,这就是第二次运行的时间比第一次的少的原因

如果你需要精确的时间统计,其实应该获取程序占用的cpu时间,或者你进行测试的时候系统最好是刚启动比较稳定的,而且没有运行什么后台程序等


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-26 14:44
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

THANK YOU

以下是引用aogun在2006-6-26 14:44:43的发言:

如果你需要精确的时间统计,其实应该获取程序占用的cpu时间


这个能给个例子吗

2006-06-26 15:27
aogun
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:638
专家分:0
注 册:2006-4-5
收藏
得分:0 

嗯,随便写了个,可以获取当前进程占用cpu时间,你可以把其中的获取时间写成函数,还可以在要统计的一段程序前后获取时间然后算差值就可以知道一段程序的cpu占用时间,不过这种方法有个缺陷就是只能精确到毫秒
[CODE]#include<windows.h>
#include <iostream>
using namespace std;
void main()
{
int i, j;
HANDLE hProcess;
FILETIME ft1, ft2, ftKernel, ftUser;
SYSTEMTIME stKernel, stUser;
ULONG ulTime;

DWORD dwProcID = GetCurrentProcessId();
hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, dwProcID );
for (i = 0; i < 100000; i ++)
{
for (j = 0; j < 10000; j ++)
{
int x = 9;
}
}
Sleep(8000); //这里写个sleep是想告诉你这种统计方法是不会将Sleep这种基本不耗cpu的时间损耗计算在内,最后结果根据个人的计算机来定,应该不会超过8秒
GetProcessTimes(hProcess, &ft1, &ft2, &ftKernel, &ftUser);
FileTimeToSystemTime(&ftKernel, &stKernel);
FileTimeToSystemTime(&ftUser, &stUser);

ulTime = stKernel.wSecond * 1000 + stKernel.wMilliseconds + stUser.wSecond * 1000 + stUser.wMilliseconds;
cout<<ulTime<<endl;
system("pause");
}[/CODE]


世界上总共有 10 种人,一种懂得什么是二进制 ,一种不懂。
2006-06-26 16:17
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
收藏
得分:0 

very thank you
windows编程还不会
先收藏了


2006-06-26 18:42
快速回复:[求助]同一程序,运行时间不一样
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039924 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved