Compiler optimization

发布时间 2023-09-04 18:14:57作者: 0x7F
  1. 化简
  • 代数化简
  • 常量折叠
  1. 内联
  • 内部函数和外部函数
  1. 指针
  • 指针别名
  • 合并写入
  • 不能跳跃
  1. 矢量化
  • 使用更宽的寄存器xmm和ymm
  • 自动调用标准库
  • 使用SIMD汇编指令(特殊情况使用边界特判)
  1. 循环

  2. 结构体

  • 结构体内存布局
  1. STL容器

  2. 数学运算

  3. 函数尽量写在同一个文件内

  4. 避免在 for 循环内调用外部函数

  5. 非 const 指针加上 __restrict 修饰

  6. 试着用 SOA 取代 AOS

  7. 对齐到 16 或 64 字节

  8. 简单的代码,不要复杂化

  9. 试试看 #pragma omp simd

  10. 循环中不变的常量挪到外面来

  11. 对小循环体用 #pragma unroll

  12. -ffast-math 和 -march=native