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