- 化简
- 代数化简
- 常量折叠
- 内联
- 内部函数和外部函数
- 指针
- 指针别名
- 合并写入
- 不能跳跃
- 矢量化
- 使用更宽的寄存器xmm和ymm
- 自动调用标准库
- 使用SIMD汇编指令(特殊情况使用边界特判)
-
循环
-
结构体
- 结构体内存布局
-
STL容器
-
数学运算
-
函数尽量写在同一个文件内
-
避免在 for 循环内调用外部函数
-
非 const 指针加上 __restrict 修饰
-
试着用 SOA 取代 AOS
-
对齐到 16 或 64 字节
-
简单的代码,不要复杂化
-
试试看 #pragma omp simd
-
循环中不变的常量挪到外面来
-
对小循环体用 #pragma unroll
-
-ffast-math 和 -march=native