我在C++中有一个简短的浮动转换,这是我的代码瓶颈.
该代码从硬件设备缓冲区转换,该缓冲区本身是短路的,这代表来自花式光子计数器的输入.
float factor= 1.0f/value;
for (int i = 0; i < W*H; i++)//25% of time is spent doing this
{
int value = source[i];//ushort -> int
destination[i] = value*factor;//int*float->float
}
Run Code Online (Sandbox Code Playgroud)
一些细节
值应该从0到2 ^ 16-1,它表示高灵敏度相机的像素值
我在配备i7处理器的多核x86机器上(i7 960是SSE 4.2和4.1).
源与8位边界对齐(硬件设备的要求)
W*H总是可被8整除,大部分时间W和H可被8整除
这让我感到难过,有什么我可以做的吗?
我正在使用Visual Studios 2012 ...