可以试试下面这个代码的速度。和你的普通版是等价的。我觉得不应该超过2ms.
uint32_t *pBuffer = buffer;
uint32_t *pBufferEnd = &buffer[size.w * size.h];
uint8_t *pGrayscaleBuffer = grayscaleBuffer;
while (pBuffer < pBufferEnd)
{
*pbuffer = chromaMap[*pGrayscaleBuffer];
++pbuffer;
++pGrayscaleBuffer;
}
【 在 libgcc 的大作中提到: 】
: 如下2段代码,就是从一个256的buffer里给一个800x800的indexarray,把灰度映射成后rgba彩色
: 普通版的要29ms左右,avx2版本的居然<1ms
: 不是最多只能快8倍么,怎么差这么多,而且确实填充的值是一样的
: ...................
--
FROM 120.244.156.*