C++ std::pow(double,int)`比std::pow(double,double)快吗?如果是,要快多少?

C++ std::pow(double,int)`比std::pow(double,double)快吗?如果是,要快多少?,c++,algorithm,performance,C++,Algorithm,Performance,我看到了一个关于std::pow的老问题: 老问题提到std::pow有一个变体是std::powdoull,int,一些用户说这个版本可能更快 std::powdoull,int比std::powdoull,double快吗?如果是,要快多少 p、 我已经知道过早优化是有害的,但我问这个优化问题是出于学术目的,或者我已经将那行代码/代码块确定为瓶颈,期望: std::powdoull,int是logn运行时循环的日志缩减 双x,双y{explogx*y;} 应该很接近 从评论中: en.cpp

我看到了一个关于std::pow的老问题:

老问题提到std::pow有一个变体是std::powdoull,int,一些用户说这个版本可能更快

std::powdoull,int比std::powdoull,double快吗?如果是,要快多少

p、 我已经知道过早优化是有害的,但我问这个优化问题是出于学术目的,或者我已经将那行代码/代码块确定为瓶颈,期望:

std::powdoull,int是logn运行时循环的日志缩减

双x,双y{explogx*y;}

应该很接近

从评论中:

en.cppreference.com/w/cpp/numeric/math/pow 7自C++11以来,如果任何参数具有整数类型,则将其转换为double鲍勃2018年4月11日20:10
我的解释可能是错误的,库实现者可能不同意这一说法,即在C++11之前,他们可能有不同的实现,但自从C++11以来,他们应该共享相同的实现,而参数只是简单地进行铸造鲍勃2018年4月11日20:25
FWW,从C++中移除了一个IN的重载,因为在没有希望执行操作的数据集和/或平台的情况下,C++的速度快得多。换言之,您需要更快地对其进行基准测试。它可以是。我使用的C++库实现将它重载到一个使用多重移位的循环中。如果你想知道哪个更快,自己测量一下。7自C++11以来,如果任何参数具有整型,则将其强制转换为双精度。@Bob_uuu:我确信这是一个结果等价性,而不是实际的实现。我的解释可能是错误的,库实现者可能不同意这种说法,即在C++11之前,他们可能有不同的实现,但自C++11以来,他们应该共享相同的实现,而参数只是简单地浇铸。