更快地将整数用作布尔值?

Max*_*mus 2 c optimization

从内存访问的角度来看......是否值得尝试这样的优化?

int boolean_value = 0;

//magical code happens and boolean_value could be 0 or 1

if(boolean_value)
{
   //do something
}
Run Code Online (Sandbox Code Playgroud)

代替

unsigned char boolean_value = 0;

//magical code happens and boolean_value could be 0 or 1

if(boolean_value)
{
   //do something
}
Run Code Online (Sandbox Code Playgroud)

无符号字符当然只占用整数4(假设32位平台)的1个字节,但我的理解是处理器从内存中读取整数值会更快.

小智 7

它可能会或可能不会更快,速度取决于很多事情,通用答案是不可能的.例如:硬件架构,编译器,编译器选项,数据量(它是否适合L1缓存?),其他竞争CPU的东西等.

因此,正确的答案是:尝试两种方式并针对您的具体情况进行衡量.

如果测量没有表明一种方法明显快于另一种方法,那么选择更清晰的方法.