gpt4 book ai didi

c - 在 C if-else 语句中,应该先出现更可能为真的条件吗?

转载 作者:太空狗 更新时间:2023-10-29 17:21:24 25 4
gpt4 key购买 nike

我碰巧写了一个 if-else 语句,条件大多数时候都是假的(检查是否分配了静态指针)。哪个更适合编译器优化?或者他们只是平等的?该函数会被调用很多次,因此优化其性能至关重要。

void foo() {
static int * p = NULL;
if (p == NULL) {
p = (int *) malloc( SIZE * sizeof(int));
}
//do something here
}

void foo() {
static int * p = NULL;
if (p != NULL) {
//do something here
} else {
p = (int *) malloc( SIZE * sizeof(int));
//do something
}
}

最佳答案

一些编译器可以允许开发人员指定哪种情况更有可能发生或不太可能发生。这在 Linux 内核中被大量使用。

在 gcc 中,有 likely(x) 或 unlikely(x) 宏。示例:

if (unlikely(p == NULL)) {
p = malloc(10);
}

关于c - 在 C if-else 语句中,应该先出现更可能为真的条件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20324940/

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