gpt4 book ai didi

c - 交换 if/else 条件时性能有差异吗?

转载 作者:行者123 更新时间:2023-12-01 15:05:46 26 4
gpt4 key购买 nike

性能上有区别吗

if(array[i] == -1){
doThis();
}
else {
doThat();
}

if(array[i] != -1){
doThat();
}
else {
doThis();
}

当我现在已经只有一个元素(或者通常只有几个元素)的值为 -1 时?

最佳答案

这完全取决于您的编译器选择如何优化它。您无法保证哪个更快。如果你真的需要给编译器提示,看看 Linux 内核中的 unlikely 宏是这样定义的:

#define likely(x)      __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)

这意味着你可以使用

if (likely(something)) { ... }

if (unlikely(something)) { ... }

详情在这里:http://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

道德:编写代码是为了可读性,而不是你认为编译器会如何优化它,因为你很可能是错的。

关于c - 交换 if/else 条件时性能有差异吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21363796/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com