我有一个像这样的循环:
for(i = 0; i < arrayLength; i++)
{
result[i / 8] = SETBIT(result[i / 8], ++(*bitIndex), array[i]);
*bitIndex %= 8;
}
Run Code Online (Sandbox Code Playgroud)
我想知道什么是更好的,性能方面,如果我使用上面的风格,或这种风格:
for(i = 0; i < arrayLength; i++)
{
result[i / 8] = SETBIT(result[i / 8], ++(*bitIndex), array[i]);
if(*bitIndex == 8) *bitIndex = 0;
}
Run Code Online (Sandbox Code Playgroud)
这是在C中,用GCC编译,也可以理解.
谢谢
谈论优化没有任何意义......
在您的情况下,对于大多数系统,两个示例之间没有区别.你真正应该关注的是编写可读代码,而不是反过来.考虑将程序重写为以下内容:
for(i = 0; i < arrayLength; i++)
{
(*bitIndex)++;
SETBIT(&result[i / 8], *bitIndex, array[i]);
*bitIndex %= 8;
}
Run Code Online (Sandbox Code Playgroud)
这可能会产生与您已经拥有的完全相同的二进制可执行文件,+ - 几个CPU标记.