社区
其它技术问题
帖子详情
C++ 的for循环问题
HjLZhyp
2013-11-09 11:30:00
程序1:
for (i=0; i<n; i++)
{
A;
B;
C;
}
程序2:
for(i=0; i<n; i++)
{
A;
}
for(i=0; i<n; i++)
{
B;
}
for(i=0; i<n; i++)
{
C;
}
问题:
什么情况下程序一运行更快?
什么情况下程序二运行更快?
...全文
453
6
打赏
收藏
C++ 的for循环问题
程序1: for (i=0; i<n; i++) { A; B; C; } 程序2: for(i=0; i<n; i++) { A; } for(i=0; i<n; i++) { B; } for(i=0; i<n; i++) { C; } 问题: 什么情况下程序一运行更快? 什么情况下程序二运行更快?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lm_whales
2013-11-15
打赏
举报
回复
从计量角度考虑,第一个循环变量,只进行一次循环改变。 从实际角度考虑,就有许多因素了。 比如,X86 汇编语言,可以loop指令,而 A,B,C 指令长度都比较大的话,就不能使用 loop指令了。 那么 分开的循环,可能要快。 如果使用跳转指令,实现循环,那么短跳转指令实现的比较快。 循环内部的代码少,执行的就快。 多了以后,只能用长跳转,执行的就慢了。 其他,还包括虚拟内存的影响,cache 的影响,包括磁盘 cache的影响。 有些因素会相对加快,某些代码的效率, 有些因素会模糊,代码的效率差异,所以这个真的不好说。 真想知道的比较清楚的话。 找些资料(CPU,汇编,操作系统,C,C++,编译原理等等) 然后自己做些试验,耐心研究一番,可能就知道了。
lunat
2013-11-09
打赏
举报
回复
从编译器循环展开优化和并行执行等方面,需要视指令依赖性、指令功能具体分析。
simonhehe
2013-11-09
打赏
举报
回复
第一种 做同样的事情, 减少初始化赋值和遍历效率会更高
worldy
2013-11-09
打赏
举报
回复
差别很微小,但按照你程序逻辑,第一个肯定更快,我的断言是不可能例外,即使n是负数,即循环体都不会被执行,那么前者做一次判断,后者要做三次判断
max_min_
2013-11-09
打赏
举报
回复
这样 A,B,C的具体内容啥啥呢?都不清楚呢? 看具体情况吧! 一般情况考虑简单的代码复用肯定是第一种了,但是扯到效率问题,就不能这么简单的来说1 ps:次题目之前已经有帖子讨论过了!
worldy
2013-11-09
打赏
举报
回复
想起来了,由于现在CPU都使用catch,因此从cath命中率的角度,在ABC都是长代码的时候,第二种效率会更高,..............谁知道呢
for
循环
中取出最大最小 累加_用
C++
解决数学中的数论
问题
本文介绍用
C++
解决数论求值
问题
的方法。提到
C++
中常用的for、while和do - while
循环
,通过多个例题展示如何运用这些
循环
及递归算法解决最值、最大公因数、分解质因数等数论
问题
,体现将数论求值
问题
转化为算法
问题
的思路。
【
C++
】for
循环
因size(),size_t,无符号数溢出死
循环
的
问题
本文介绍了
C++
中因无符号数溢出导致的死
循环
问题
,特别是涉及for
循环
和size()函数时。讨论了有符号数到无符号数转换的规则,并通过三个案例分析了可能导致死
循环
的原因,包括for
循环
误用unsigned、int变unsigned以及无符号size()溢出。强调了正确处理无符号整型size_type在减1时防止溢出的重要性。
关于
C++
中for
循环
的
问题
本文深入探讨了
C++
中for
循环
的使用方法,包括其语法结构和内部工作原理,并通过实例展示了如何正确使用for
循环
以及避免常见的陷阱。重点分析了一个具体的for
循环
实例,解释了其背后的逻辑和执行过程。
C++
11 auto进行for
循环
时,
循环
变量的地址
问题
本文探讨了
C++
11中auto与decltype的关键字用法,并详细对比了两者之间的区别。同时,通过实例介绍了在for
循环
中使用auto时,
循环
变量是否加引用的不同效果。
C/
C++
缓冲区
问题
、计时
循环
和基于范围的for
循环
本文详细介绍了C/
C++
中的输入输出缓冲区机制,包括全缓冲、行缓冲和无缓冲的区别,以及如何处理空格、换行符等空白字符。讨论了cin和scanf在处理数值和字符时的不同,特别是对空格的处理。同时,针对字符串数组中的空白处理进行了说明,指出cin和scanf都会将空白作为字符串结束标志。文章还探讨了如何利用缓冲区特性,通过
循环
逐字符读取和输出字符串,并讲解了如何处理文件尾条件。最后,提到了
C++
11引入的基于范围的for
循环
,简化了数组或容器的遍历操作。
其它技术问题
3,881
社区成员
9,044
社区内容
发帖
与我相关
我的任务
其它技术问题
C/C++ 其它技术问题
复制链接
扫一扫
分享
社区描述
C/C++ 其它技术问题
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章