c++ - 为数组赋值时是否存在性能差异

标签 c++ c arrays

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/

相关文章:

c++ - 如何获取文本宽度(DirectX、C++)

c - C 中的中断

c - 如何使用 bpf 返回数据包

在 malloc() 的 char 指针上调用 free() 会导致程序因指针无效而崩溃

python - 从Python文件中读取数组

c++ - 编译 Cilk Plus 程序时遇到问题

c++ - Visual Studio 调试工具提示 - 隐藏变量

Java 和 SWIG : class into a package

c - 处理数组和 for 循环的汇编代码,以及如何解码映射函数

arrays - 如何在Pascal中制作多行数组