哪个更快:为变量分配相同的值,或找出它是否已设置?

Kur*_*uro 0 c++ memory conditional-statements

这对今天的计算能力来说可能是无关紧要的,但它仍然让我感兴趣.

我有一个布尔数组,根据按下的键,在主循环的每次迭代中都会更改.然后引用该数组以获取有关键盘输入的信息.

那么:在写入变量之前检查变量是否已设置为相同值更有效,

void keyDown(unsigned char key){
    if(!keys[key])
        keys[key] = true;
}
Run Code Online (Sandbox Code Playgroud)

或者,在每个KeyDown函数迭代中将值写入相应的数组字段是否更好?

void keyDown(unsigned char key){
    keys[key] = true;
}
Run Code Online (Sandbox Code Playgroud)

Thanx.)

fre*_*low 8

没关系.我们在谈论这里的回调函数,每次用户点击一个键时都会执行.这不会发生每秒数百万次.

也就是说,只分配值的无分支版本可能会更快.更重要的是,它的WTF因子为0.我对条件版本的第一反应是"WTF是这个狗屎?"

  • 此外,在任何非平凡的系统上,I/O中断,驱动程序,准备线程的信令,消息处理等将完全淹没这种微优化. (4认同)