在C中设置其值之前检查变量是否更好?

前端之家收集整理的这篇文章主要介绍了在C中设置其值之前检查变量是否更好?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果我有一个布尔值和一些代码可能会改变它,然后我想将它设置为true,我应该检查它是否为假?

例如:

bool b = false;
// Some code
// Here "b" can be true or false
if (cond) {
    b = true;
}

VS

bool b = false;
// Some code
// Here `b` can be `true` or `false`
if (cond && !b){
    b = true;
}

哪个更快?

注意:

我问,因为以下实施Sieve of Eratostheneshttp://bloc.gerardfarras.com/wp-content/uploads/2011/12/erastotenes.txt

if (( i % divisor == 0 ) && ( numsprimers[i] == 0 )) {
    numsprimers[i] = 1;
}

(如果numsprimers [i] == 1,则表示我不是素数.如果它为0,则可以是素数或不是素数)

解决方法

这是非常挑剔的,但一般来说,改变价值会更好.

无论如何,检查和设置值的开销大致相同,那么为什么在某些情况下你想要同时执行这两种操作呢?

现在,如果你想知道是否应该覆盖一些自定义类型(比如一个100000字的列表),或者你应该检查是否需要首先覆盖它(比如说只需检查一个布尔值或一个时间戳)然后你应该先检查一下,因为检查布尔值或时间戳的成本远远低于将这么多单词写入内存.

这当然都取决于各种因素,例如您正在编辑的内存是否在缓存中,“检查”的成本是多少,需要覆盖值的频率与不需要覆盖的频率,当然还有记忆的大小.

猜你在找的C&C++相关文章