[问题] 指标 直接存取与使用下标存取 差异

楼主: 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