24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1520  |  回复: 10
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

lixy1217

木虫 (著名写手)

[求助] 求C语言基本运算的运行时间分析

由于偶是计算数学专业的,对计算时间比较在意,所以很想知道在C中各种基本运算的计算量差别大小,可是对计算机了解较少,而且现在也不可能有时间去研究机器语言,所以希望在此得到高人相助

包括整型、浮点型的 +  -  *  /  =  +=   -=   *=   /=, if  和  for  还有函数调用这些流程控制所占用时间,不需要多么精确地知道其差别,只想知道在运行时间上谁比谁多一点,谁跟谁差不多,或者谁比谁大的多,或者谁跟谁比可忽略不计

自己做过一些试验,但由于干扰因素太多,很多信息都无法测量出来,但也得出了一些结论,比如,四则运算中  加法与减法一样,乘法稍微多一点,除法多很多,另外,如果一个变量进行值得改变,那么它在下一次计算中计算时间明显减少。希望这些能够抛砖引玉,了解更多相关内容
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

偶尔敞开心扉,世界将不再孤独
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)


jjdg(金币+1): 感谢参与 2011-11-05 15:38:36
引用回帖:
5楼: Originally posted by lixy1217 at 2011-11-04 09:46:13:
汇编语言我暂时肯定没时间去研究,其实我的目的也很单纯,我就想知道C程序关于浮点型变量的一般的加减乘除运算从运行时间上有没有倍数上的差别,这样以后在计算编程时就可以稍加注意一下了。

具体的情况和CPU是有关的
不过大概情况的话,基本可以这么认为:

对于浮点数:

加减法的时间一致,
乘法的时间和加减法在同一数量级上(像P1和PMMX的话,FMUL和FADD和FSUB用的时钟周期是一样的,不过在PPro、P2和P3上,就比加减法要略大),
除法的时间比前面三者大一个数量级左右
6楼2011-11-04 10:33:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 11 个回答

文俊点点

木虫 (著名写手)

【答案】应助回帖


xzhdty(金币+1): 简单明了 2011-11-03 17:00:21
lixy1217(金币+1): 我确实是百度和谷歌了的,可没找到我想要的信息,如果你百了很多,那能否推荐个链接? 2011-11-03 22:31:33
百度一下  谷歌一下  这些东西很多的·······
我白了一下很多的········
这是你所拥有的时间·····这是你所能改变的生活·········
2楼2011-11-03 12:39:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

【答案】应助回帖

★ ★
lixy1217(金币+9): 这个问题看起来貌似很复杂啊~ 2011-11-04 09:46:48
余泽成(金币+2): 谢谢参与应助! 2011-11-08 17:56:03
如果想极端优化,楼主需要的是一张列有时钟周期数的汇编指令表,针对某个你使用的特定的CPU。不然就看分割线以下的内容。

单纯地对C语句进行分析是显然不行的,编译器在背后做的大量的优化工作有时候会让你很惊讶。像整型数*2会被优化为左移这种事情早就稀松平常了,复杂得多、匪夷所思的优化在现代编译器中比比皆是。程序实际的走法,可能和你原来设计的是不一样的,编译器只保证结果是对的(=,=虽然偶尔有BUG不过确实这是追求的目标)。

优化之路还没在计算时钟周期数这里结束,怎么产生让CPU流水线最大效益化(像Intel特地还出了The Software Vectorization Handbook还告诉程序员这方面的一点事情),也是追求极致效果的程序员需要学习的

=========以上是比较极端的做法=========

其实呢,主导计算速度的东西,是“算法”啊!再者就是代码的可读性的权衡的问题。现在因为设备的计算能力已经提高很多,设计C程序的时候一般不会考虑太细的优化问题了。所以其实楼主不用纠结太多,一般不会有数量级上的时间差的。
3楼2011-11-04 09:20:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)

算法不好的话,JAVA都比C快的哦...
4楼2011-11-04 09:22:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见