gpt4 book ai didi

C++20:[[likely]]、[[unlikely]] 和 __builtin_expect 之间的区别?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:13:31 25 4
gpt4 key购买 nike

初步资料:根据近期ISO C++ Committee Trip Report ,条件分支的 [[ likely ]][[ unlikely ]] 属性将添加到 C++20 中,并且在最新版本的 GNU GCC(您可以在在线编译器上使用它 wandbox.org)。


问题:是下面的构造

if (cond) [[ likely ]] { ... }

等同于下面那个?

if (__builtin_expect(bool(cond), 1)) { ... }

不同编译器之间是否存在任何性能差异或实现的细微差别,人们应该注意这些差异才能有效地使用它?

最佳答案

Is the following construction equivalent to the following one?

有意的,是的。


Are there any performance difference or implementation nuances accross compilers that one should be aware of in order to use it effectively?

P0479可以看出,对这些属性的行为没有强制性的措辞要求。他们的行为作为非规范性注释的一部分被提及,鼓励但不是强制遵循这些实现。

回答这个问题的唯一方法是查看编译器的手册。

关于C++20:[[likely]]、[[unlikely]] 和 __builtin_expect 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57094369/

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