[問題] 指標 直接存取與使用下標存取 差異

作者: hunandy14 (Charlott.HonG)   2016-08-31 16:37:59
請問一維的指標存取
兩種存取方式會有什麼差異嗎
存取速度會不一樣嗎
int* arr = new int[10];
//
作者: uranusjr (←這人是超級笨蛋)   2016-08-31 16:53:00
沒有, bracket notation 只是 syntax sugar
作者: IhateOGC (我討厭)   2016-08-31 19:34:00
會有差異,硬體DMA光一個copy動作效能就差50%純軟可能就沒差惹
作者: wtchen (沒有存在感的人)   2016-08-31 19:39:00
請教樓上為啥會有差異?不懂....(沒最佳化的情形下)
作者: uranusjr (←這人是超級笨蛋)   2016-08-31 22:01:00
理論上用 pointer 要先加出結果才可以去 access, 然後array index 可以直接跳, 所以後者是會比較快啦但 2016 年應該連單晶片 compiler 都沒有那麼蠢的了
作者: ronin728 (浪人)   2016-09-01 02:47:00
編譯器會優化,沒差。沒開優化在大多編譯器上是有差的印象中GCC開-O0會有差,但是Clang開-O0編譯出來是一樣的
作者: yvb   2016-09-02 16:22:00
試過gcc和g++,版本4.6和3.3, 開-O0看objdump,結果都一樣.
作者: lovejomi (JOMI)   2016-09-03 07:01:00
這case跟*(arr++) 效能一樣嗎
作者: TobyH4cker (Toby (我要當好人))   2016-09-03 10:09:00
這個問題是看指令集了吧
作者: yvb   2016-09-03 12:45:00
版本4.6是x86_64, 版本3.3則是mips(be);又試 3.2 arm(be) 和 3.4 mips(le) 亦同.

Links booklink

Contact Us: admin [ a t ] ucptt.com