[問題] 關於i++ & i--的執行效能

看板C_and_CPP (C/C++)作者 (Linus)時間5年前 (2019/03/01 22:57), 5年前編輯推噓8(8011)
留言19則, 10人參與, 5年前最新討論串1/2 (看更多)
各位大大好, 想請教各位一般在用for loop時, 我們時常會在執行完一次loop後,將變數做i++ or i--, 想請教各位該如何分析i++ & i--的效能誰比較快!? 是否要將.c轉成assembly去實際看做了些什麼!? 懇請各位大大給我一點方向~ Note: 不是i++ & ++i的效能比較 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.140.38 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1551452231.A.CDC.html

03/01 23:06, 5年前 , 1F
就加法器的原理來說應該一樣快?
03/01 23:06, 1F
面試時被問這個問題,答案不是一樣快唷

03/02 00:32, 5年前 , 2F
只能看編譯結果,開最佳化通常都會幫你做掉,輪不到你想
03/02 00:32, 2F
因為面試時被問,所以想知道這個分析這個效能

03/02 10:26, 5年前 , 3F
你自己不就說要從assembly看了嗎@@
03/02 10:26, 3F

03/02 10:26, 5年前 , 4F
之前板上有人做過實驗 編譯器最後結果是一樣快
03/02 10:26, 4F

03/02 10:26, 5年前 , 5F
產生的assembly一樣 而且80:20法則 通常系統真正有
03/02 10:26, 5F

03/02 10:28, 5年前 , 6F
效能問題的不會在這種地方
03/02 10:28, 6F
感謝大大,我只是猜測分析組語,畢竟我對組語不熟,所以才發文想知道怎麼分析

03/02 11:49, 5年前 , 7F
https://godbolt.org/ 用這個看 assembly
03/02 11:49, 7F

03/02 11:53, 5年前 , 8F
然後用 linux perf 去看該 instruction 到底花多少時間
03/02 11:53, 8F

03/02 11:54, 5年前 , 9F
還可以用 pmu tool 看一下到底是卡在 CPU 的哪部分
03/02 11:54, 9F
感謝大大

03/03 10:55, 5年前 , 10F
推樓上那網站,學組語相關好用
03/03 10:55, 10F
感謝大大

03/03 17:12, 5年前 , 11F
開 optimize 的時候沒差,但是沒有開兩個差很多
03/03 17:12, 11F

03/03 17:14, 5年前 , 12F
PS 是 C++ iterator 的情況
03/03 17:14, 12F

03/03 17:14, 5年前 , 13F
所以我都習慣寫 ++i
03/03 17:14, 13F
感謝大大 ※ 編輯: qazkevin (1.161.140.38), 03/03/2019 17:26:49 ※ 編輯: qazkevin (1.161.140.38), 03/03/2019 17:29:07

03/04 10:38, 5年前 , 14F
幫幫大家, 哪一公司部門講出來 XD
03/04 10:38, 14F
感謝大大,已私

03/04 11:32, 5年前 , 15F
難道是想要問說迴圈倒著跑每次會少一個 cmp 嗎...
03/04 11:32, 15F
這個我真不曉得,只記得當時面試官給的提示要看組語 ※ 編輯: qazkevin (1.161.148.46), 03/06/2019 22:58:57

03/07 03:53, 5年前 , 16F
哪間公司 好奇+1
03/07 03:53, 16F

03/09 11:12, 5年前 , 17F
我覺得是不是你記錯面試題目了 通常是問++i跟i++哪個快
03/09 11:12, 17F

03/09 11:13, 5年前 , 18F
誒我看到你的note了.... 拍寫那當我沒說 XD
03/09 11:13, 18F

03/09 11:14, 5年前 , 19F
另外gcc -S就可以把code編譯成組語了
03/09 11:14, 19F
文章代碼(AID): #1SUKX7pS (C_and_CPP)
文章代碼(AID): #1SUKX7pS (C_and_CPP)