其实最新的cpu在这块区别不大了,虽然指令上有对齐和不对齐两个指令,但在微指令上好像性能差别不大了(没有亲自测试过,也是听别人分享的测试结果)
【 在 snnn (cm) 的大作中提到: 】
: 我来认认真真的解释一下,MaLing 说的某些是对的。
: 首先,在Intel CPU上,对于memcpy这样的操作,假设你的内存带宽不是瓶颈(这个假设恐怕不成立),那么最佳方式就是利用CPU的SIMD来实现这样的操作。那么很显然SIMD是对对齐有要求的。即便只考虑Intel CPU,你也得想到底是SSE还是AVX还是AVX2还是AVX512。 不同指令集扩展对此要求不一样。比如AVX512需要64字节对齐。512 bits are 64 bytes.
:
: 但是你的input 数组的长度未必恰好是64字节的整数倍。所以这时候就需要多写一些if...else去处理剩余的不够64字节的部分。如果你追求极致,这些代码会影响程序效率。一个简化做法就是多分配一些,要求所有这样的buffer都是按64字节对齐并且长度是64的整数倍。
--
FROM 183.213.128.*