PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 两层for循环的效果
楼主:
mh2ant
(环球科大扛坝子)
2017-05-25 12:39:02
大家好
今天去面试主管问我一题
第一个状况
for i=1~100
for j=1~1000000
s=s+i*j
第二个状况
for i=1~100000
for j=1~100
s=s+i*j
哪一个比较快
我是回答第一个状况
因为我觉得跳出循环回到上个循环比较少次
所以会比较快
主管说是正确答案
然后有解释一番
但我有点忘记了
想请问各位大大有没有详尽的解释
谢谢
作者:
andrenvq57
(喂!威,喂?)
2017-05-25 13:41:00
1000000^100=10^600 < 100^1000000=10^2000000
作者:
moebear
(萌熊)
2017-05-25 13:53:00
为啥是指数
作者:
libertyleave
(SSLin)
2017-05-25 14:21:00
两种状况循环跑不一样多次耶 是否有一边多一个0
楼主:
mh2ant
(环球科大扛坝子)
2017-05-25 14:55:00
对抱歉少一个0,因为在捷运上急急忙忙发文没看清楚
作者:
kokal
(细菌)
2017-05-25 15:13:00
branch prediction的问题吧
作者:
Hazukashiine
(私は幸せです)
2017-05-25 15:27:00
实际上有很高的机率 这两个会一样快i 跟 j 都是 local 很容易被编译器优化掉s 也没被存取 基本上可能被判定为 dead code (DCE)
作者:
johnlinvc
(阿翔)
2017-05-25 15:36:00
-Ofast会直接回传答案XD
https://godbolt.org/g/da8rbt
作者: ersfw4418 (隐身术)
2017-05-25 16:43:00
第一种会比较快可能是没优化情况j生成毁灭次数较少但像矩阵运算等 可能会与cache access有关 效率就不一定谁好 内层loop次数少 也可能优化时直接unrolling有错误请纠正小弟
作者:
feeya
(24 August 升格为乡民)
2017-05-26 16:52:00
把状况极端化 2x1000000 跟 1000000x2 哪个比较快
作者:
MOONRAKER
(㊣牛鹤鳗毛人)
2017-05-28 10:43:00
算一百万个常数实在没什么意思
作者:
friendever
(hi~)
2017-05-30 17:51:00
branch prediction是你要的关键字
继续阅读
Re: [问题] C 语言下有类似 Template 的功能吗?
loveflames
[问题] C 语言下有类似 Template 的功能吗?
henry8168
Re: [问题] array out of bound的问题
loveflames
[分享] 气泡排序法递回写法不使用for
Ayuang
[讨论] function pointer比switch和if有效率?
Zoxge
[问题] 8051 4bit倒数器 倒数问题
flameon5566
[问题] C++ utf8将日文字符存入数据库
rul3nk41
[问题] array out of bound的问题
hoshi1992
[问题] 无限循环中的变量比较
cliffchang2
[问题] 传空List进function,产生新List
Hyozero
Links
booklink
Contact Us: admin [ a t ] ucptt.com