gpt4 book ai didi

C++ 模板 : Inlined code and Compiler Optimzations

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:54:49 26 4
gpt4 key购买 nike

是否可以安全地假设以下代码在被编译器优化和内联时会删除评估三元运算所需的分支?或者对于大多数主流编译器来说,将下面的方法分成两个单独的方法以避免分支会更明智吗?

/*! \brief this method returns the cos of an angle. User can specify if it is
* in degrees or radians.
*/
template <typename T, angle_mode AM>
T cos(const T &angle)
{
return (AM == radians) ?
std::cos(angle) :
std::cos(degrees_to_radians(angle));
}

最佳答案

是的,应该始终对其进行优化。

即使不是,我也觉得 std::cos 的成本会大大超过条件的成本。

如果由于某种原因它没有被优化,使用模板特化在编译时强制分支。

关于C++ 模板 : Inlined code and Compiler Optimzations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17120833/

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