我在C中有一段代码,内容如下:
a = b & ((1<<24) - 1);
Run Code Online (Sandbox Code Playgroud)
如果我没有误会,这相当于:
a = b & 0xFFFFFF;
Run Code Online (Sandbox Code Playgroud)
写第一个在性能方面有什么好处?对我来说,阅读起来比较复杂,但我想那个写过的人有比我更好的C背景.
谢谢
我正在尝试使用SSE内在函数优化一小段代码(我是关于该主题的完全初学者),但我有点坚持使用条件.
我原来的代码是:
unsigned long c;
unsigned long constant = 0x12345678;
unsigned long table[256];
int n, k;
for( n = 0; n < 256; n++ )
{
c = n;
for( k = 0; k < 8; k++ )
{
if( c & 1 ) c = constant ^ (c >> 1);
else c >>= 1;
}
table[n] = c;
}
Run Code Online (Sandbox Code Playgroud)
这段代码的目标是计算一个crc表(常量可以是任何多项式,它在这里不起作用),
我想我的优化代码是这样的:
__m128 x;
__m128 y;
__m128 *table;
x = _mm_set_ps(3, 2, 1, 0);
y = _mm_set_ps(3, 2, 1, 0); …Run Code Online (Sandbox Code Playgroud)