是否有更有效的方法来获得C / C ++中double
的两个内存块数组的绝对差值之和,而不是在数组元素上执行循环?所以,我想知道是否有一个类似于memset
,memcpy
,memcmp
等的功能。
你如何定义差异?
内存块包含double
个值,我需要的是内存块数组的相应索引中值之间的绝对数值差的总和。
答案 0 :(得分:1)
是的,有SIMD。如果您使用GCC,可以尝试添加-msse2 -O3
之类的内容,看看它是否会自动为您生成SIMD说明。如果是,或者您选择使用库来执行显式SIMD,则可以为每条指令处理四个浮点数。为了提高你的机会,尝试使你的内部循环变得简单,以便优化器可以轻松处理它。