概念定义
标量循环每迭代处理一个元素,向量化后一条指令处理四到十六个。只要代码允许给出证明,这个变换由编译器自主完成。
工作机制
向量化器检查循环携带依赖、数组间别名、对齐与迭代次数,然后发射宽加载、宽存储与宽运算并处理尾部。内联很关键:藏在另一个函数里的乘法在内联前会挡住变换。编译器报告会点名失败的循环与确切原因。
使用场景
数值内核、校验和、base64 与 UTF 转换、一切在大缓冲上逐元素跑的循环。为证明器组织代码:纯循环、局部边界、restrict 指针、无提前退出。
常见误区
向量化不是“自动就会发生”:证明是保守的,一个函数调用或歧义指针就静默杀死变换——无辜重构即可让它失效且毫无警告。内存受限循环在带宽饱和后收益有限;宽指令抬高寄存器压力还可能溢出。CI 里应跑向量化报告,让静默回归以测试失败的形式浮出水面。