int i=0;
a[i] =3;
i++;
Vs
int i=0;
a[i++]=3;
这只是一种编写代码和节省行数的奇特方式,还是确实提高了性能?
最佳答案
使用https://godbolt.org/ ,启用优化的 GCC 会为这两种情况生成相同的代码。
main:
sub rsp, 8
mov esi, 3
mov edi, OFFSET FLAT:std::cout
call std::basic_ostream<char, std::char_traits<char> >::operator<<(int)
xor eax, eax
add rsp, 8
ret
_GLOBAL__sub_I_main:
sub rsp, 8
mov edi, OFFSET FLAT:std::__ioinit
call std::ios_base::Init::Init()
mov edx, OFFSET FLAT:__dso_handle
mov esi, OFFSET FLAT:std::__ioinit
mov edi, OFFSET FLAT:std::ios_base::Init::~Init()
add rsp, 8
jmp __cxa_atexit
注意:gcc 已优化 std::cout << a[0]
至std::cout<<3
关于c++ - 为数组赋值时是否存在性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50624629/