| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 941 人关注过本帖
标题:求助 关于程序执行时间的问题!
只看楼主 加入收藏
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:12 
求助 关于程序执行时间的问题!
为什么同样的程序在TC下编译和在VC下编译执行起来花的时间不一样呢?下面是我的源码,大家可以试一下!运行结果 一目了然,VC下编译的要快好多!但是原因我却不是很清楚,哪位大侠清楚的帮忙解释下?
程序代码:
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>
main()
{
    long i,j,k,count=0;
    double runtime=(double)clock();
    for(i=2;i<=999999;i++)
    {
       k=sqrt(i);
       for(j=2;j<=k;j++)
       if(i%j==0)break;
       if(j>k)
            count++;
    }
    printf("\n%ld\n",count);
    runtime=((double)clock()-runtime)/CLK_TCK;
    printf("RUNTIME IS : %f S\n",runtime);
}



[ 本帖最后由 jack10141 于 2010-8-11 13:42 编辑 ]
搜索更多相关主题的帖子: 时间 
2010-08-10 23:02
liuzhengshen
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:83
专家分:141
注 册:2010-4-23
收藏
得分:0 
楼主啊!因编译器的的不同,肯定时间也是有所不同啦!
2010-08-11 10:45
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 2楼 liuzhengshen
如果差异不大也就算了,关键是差异太大了!呵呵 差别是几十倍啊!VC下花的时间,是TC下所花时间的几十分之一!你也可以把运算工作量加大试一下!

[ 本帖最后由 jack10141 于 2010-8-11 10:57 编辑 ]

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-11 10:54
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 2楼 liuzhengshen
是不是编译器的字长位数影响呢?TC是16位的 而VC是32位??

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-12 10:30
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 楼主 jack10141
都没有人肯帮我多解释下么??

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-12 16:57
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
大家来帮忙讨论下啊??我真的有点迷惑啊!

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-13 01:52
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:20 
代码优化的问题吧。你说的16,32位也有可能。

vc 默认情况好像就会开优化,TC 的我不清楚。
而且跟用的库有关系,sqrt 这个函数,vc 的库是直接用硬件算的,基本上可以理解为就一条语句就能算出来。TC 的用的什么库我也不清楚,不过它比较老,如果那时硬件不支持浮点数开平方的话,那么有可能是用数值方法算的,一个函数就得执行几下循环才能搞出平方根。

大体上,如果还有生命的编译器,库是会不断更新的,稳定性,和执行速度肯定是只增不减。一般代码优化的作用会比较明显。不过你的代码也很简单,如果都开了优化应该区别不大才对。

反正这个和编译器关系很大,好多东西从表面现象上分析不出什么实质的結果。
2010-08-13 14:03
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
哦,可能还和系统的支持有关系,vc 是微软自己的东西,里边很多地方可能优化的会更好一些。而 TC 就差一点。

记得我以前写了一个小程序,建1000个文件夹,每个文件夹里都分别有1000个文件。
同样的代码,都是用 gcc 编译。在 linux 下,这个程序跑了 58 秒。windows 下,好像是跑了 4 分半钟多。而删除它们,linux 下好像还比创建快一点。windows 同样是4分半以上。
不过这个可能是 ntfs 这个文件系统的效率有限,和 gcc 可能关系不大。我只是打个比方。
2010-08-13 14:11
jack10141
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:陕西西安
等 级:小飞侠
威 望:6
帖 子:706
专家分:2271
注 册:2010-8-10
收藏
得分:0 
回复 8楼 pangding
感谢楼上的指点,我自己虽然程序写过不少,但是对于效率的问题没有探究过,最近在写一些尽量节省时间的代码,所以在比较相同的程序在不同环境下的执行时间,看都有哪些因素在影响时间的消耗,以便选择时间效率最高的环境和方法

Coding就像一盒巧克力,你永远不会知道你会遇到什么BUG
别跟我说你是不能的,这让我愤怒,因为这侮辱了你的智慧
2010-08-13 14:37
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
和环境关系不大,一般我们只关心代码的质量。代码写得好,将来随时都可以重新编译。
 
要想花更少的代价写跑得更快的代码,得用代码分析工具,帮你分析关键点。在关键点上下功夫,选实践上更快的算法,并手工优化。
2010-08-13 22:20
快速回复:求助 关于程序执行时间的问题!
数据加载中...
 
   



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

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