| 查看: 1515 | 回复: 10 | ||
lixy1217木虫 (著名写手)
|
[求助]
求C语言基本运算的运行时间分析
|
|
由于偶是计算数学专业的,对计算时间比较在意,所以很想知道在C中各种基本运算的计算量差别大小,可是对计算机了解较少,而且现在也不可能有时间去研究机器语言,所以希望在此得到高人相助 包括整型、浮点型的 + - * / = += -= *= /=, if 和 for 还有函数调用这些流程控制所占用时间,不需要多么精确地知道其差别,只想知道在运行时间上谁比谁多一点,谁跟谁差不多,或者谁比谁大的多,或者谁跟谁比可忽略不计 自己做过一些试验,但由于干扰因素太多,很多信息都无法测量出来,但也得出了一些结论,比如,四则运算中 加法与减法一样,乘法稍微多一点,除法多很多,另外,如果一个变量进行值得改变,那么它在下一次计算中计算时间明显减少。希望这些能够抛砖引玉,了解更多相关内容 |
» 猜你喜欢
博士读完未来一定会好吗
已经有23人回复
导师想让我从独立一作变成了共一第一
已经有7人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有11人回复
读博
已经有4人回复
JMPT 期刊投稿流程
已经有4人回复
心脉受损
已经有5人回复
Springer期刊投稿求助
已经有4人回复
小论文投稿
已经有3人回复
申请2026年博士
已经有6人回复
» 本主题相关价值贴推荐,对您同样有帮助:
【求助】高效液相色谱应该至少多长时间运行一次
已经有15人回复
【求助】此段C语言代码运行不了
已经有9人回复

文俊点点
木虫 (著名写手)
- 应助: 30 (小学生)
- 金币: 2529.5
- 散金: 1796
- 红花: 1
- 帖子: 1151
- 在线: 500.1小时
- 虫号: 1219128
- 注册: 2011-03-02
- 性别: GG
- 专业: 文艺美学

2楼2011-11-03 12:39:42
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
【答案】应助回帖
★ ★
lixy1217(金币+9): 这个问题看起来貌似很复杂啊~ 2011-11-04 09:46:48
余泽成(金币+2): 谢谢参与应助! 2011-11-08 17:56:03
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
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
4楼2011-11-04 09:22:10
lixy1217
木虫 (著名写手)
- 应助: 4 (幼儿园)
- 金币: 4859.6
- 散金: 117
- 红花: 7
- 帖子: 1379
- 在线: 233.7小时
- 虫号: 1125891
- 注册: 2010-10-18
- 性别: GG
- 专业: 计算数学与科学工程计算

5楼2011-11-04 09:46:13
sudo
木虫 (正式写手)
- 程序强帖: 16
- 应助: 6 (幼儿园)
- 金币: 1297.6
- 散金: 1486
- 红花: 20
- 帖子: 588
- 在线: 641小时
- 虫号: 1211394
- 注册: 2011-02-24
- 性别: GG
- 专业: 文艺美学
6楼2011-11-04 10:33:51
zhougc
木虫 (正式写手)
黑社会老大
- 应助: 0 (幼儿园)
- 金币: 2590.9
- 散金: 120
- 帖子: 982
- 在线: 43.8小时
- 虫号: 393957
- 注册: 2007-06-06
- 性别: GG
- 专业: 凝聚态物性 II :电子结构

7楼2011-11-07 22:33:31
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
★
jjdg(金币+1): 感谢参与 2011-11-10 13:09:56
jjdg(金币+1): 感谢参与 2011-11-10 13:09:56
|
我想LZ想知道的是ALU的计算效率。如果单从语言,特别是非汇编语言(就算是汇编语言一也一样)是没法比较运算符的效率的。现代CPU架构的复杂性,已经很难理论评估计算时间了。如sudo所说,这里面包含了太多细节。 粗略估计的话,整数的加减运算参考CPU的频率,乘除大概是几个CPU周期。浮点运算更复杂一些,开使用了什么FPU。 现在如果在乎计算效率的话,不是在乎每个周期做多少运算(当然高效的算法是最重要的),而是优化代码流程,达到满流水线和高cache命中。减少内存访问以及其他的IO。 不过我觉得计算数学的话,还是关注大O和并发/并行计算以及分布式计算更重要吧。 |
8楼2011-11-10 09:57:27
holmescn
金虫 (正式写手)
- 程序强帖: 37
- 应助: 1 (幼儿园)
- 金币: 1918.8
- 散金: 275
- 红花: 1
- 帖子: 699
- 在线: 102.6小时
- 虫号: 913482
- 注册: 2009-11-26
- 性别: GG
- 专业: 凝聚态物性 II :电子结构
9楼2011-11-10 09:58:29
zhyincumt
铜虫 (小有名气)
- 应助: 0 (幼儿园)
- 金币: 22.7
- 散金: 20
- 帖子: 236
- 在线: 52.6小时
- 虫号: 1476984
- 注册: 2011-11-05
- 性别: GG
- 专业: 电力系统

10楼2011-11-10 15:06:12













回复此楼
算法不好的话,JAVA都比C快的哦...