找回密码
 注册
搜索
热搜: 回贴
  • 前程无忧官网首页 有什么好的平台可以
  • 最新的销售平台 互联网营销的平台有哪
  • 制作网页的基本流程 网页制作和网页设
  • 【帝国CMS】输出带序号的列表(数字排
  • 网站建设公司 三一,中联,极东泵车的
  • 织梦 建站 织梦网站模版后台怎么更改
  • 云服务官网 哪些网站有免费的简历模板
  • 如何建网站要什么条件 建网站要用什么
  • 吉林市移动公司电话 吉林省退休人员网
  • 设计类毕业论文 网站设计与实现毕业论
查看: 1717|回复: 5

[求助]同一程序,运行时间不一样

[复制链接]
发表于 2009-11-3 03:25:51 | 显示全部楼层 |阅读模式 IP:江苏扬州
写了一个程序,然后测试他运行的时间,发显第二次运行的时间比第一次的少,为什么呢?
还有,在不同的时间,测试同样的数据发现所用的时间也不一样?
发表于 2009-11-3 03:25:52 | 显示全部楼层 IP:江苏扬州
是不是也是第二次比第一次少
是编译器也会走捷径
就象你第一次上QQ5秒
第二次上同样的就会3秒
回复

使用道具 举报

发表于 2009-11-3 03:25:53 | 显示全部楼层 IP:江苏扬州
系统的环境比较复杂,有几方面的原因,
首先系统可能当时在后台运行程序,占用了资源,使得你的程序执行收到影响
另外一个比较重要的是Windows(从好像从winnt开始)有一种缓存机制,当第一次运行某个程序时,运行程序的数据要加载到内存中,但退出这个程序后,加载到内存中的某些数据并不会消失,而是会作为系统缓存继续存在。因此当你第二次运行时会感受到程序的载入速度比第一次会快一些,这就是第二次运行的时间比第一次的少的原因
如果你需要精确的时间统计,其实应该获取程序占用的cpu时间,或者你进行测试的时候系统最好是刚启动比较稳定的,而且没有运行什么后台程序等
回复

使用道具 举报

发表于 2009-11-3 03:25:55 | 显示全部楼层 IP:江苏扬州
THANK YOU

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

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

这个能给个例子吗
回复

使用道具 举报

发表于 2009-11-3 03:25:56 | 显示全部楼层 IP:江苏扬州
嗯,随便写了个,可以获取当前进程占用cpu时间,你可以把其中的获取时间写成函数,还可以在要统计的一段程序前后获取时间然后算差值就可以知道一段程序的cpu占用时间,不过这种方法有个缺陷就是只能精确到毫秒
  1. #include<windows.h>
  2. #include <iostream>
  3. using namespace std;
  4. void main()
  5. {
  6. int i, j;
  7. HANDLE hProcess;
  8. FILETIME ft1, ft2, ftKernel, ftUser;
  9. SYSTEMTIME stKernel, stUser;
  10. ULONG ulTime;

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

  24. ulTime = stKernel.wSecond * 1000 + stKernel.wMilliseconds + stUser.wSecond * 1000 + stUser.wMilliseconds;
  25. cout<<ulTime<<endl;
  26. system("pause");
  27. }
复制代码
回复

使用道具 举报

发表于 2009-11-3 03:25:57 | 显示全部楼层 IP:江苏扬州
very thank you
windows编程还不会
先收藏了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-30 13:26 , Processed in 0.318387 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表