C++20:[[可能]]、[[不太可能]]和__builtin_expect之间的差异



>初步信息:根据最近的ISO C++委员会行程报告,条件分支的[[ likely ]][[ unlikely ]]属性将在C++20中添加,并在最新版本的GNU GCC中可用(您可以在在线编译器 wandbox.org 上使用它(。


问:以下构造是否

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

相当于下面的一个?

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

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

以下构造

是否等效于以下构造?

有意为之,是的。


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

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

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

相关内容

  • 没有找到相关文章

最新更新