`std :: pow(double,int)`比`std :: pow(double,double)`更快?如果是的话,快多少?

时间:2018-04-11 18:38:37

标签: c++ algorithm performance

我看到了关于std::powWhat is more efficient? Using pow to square or just multiply it with itself?

的这个老问题

旧问题提及std::pow的变体是std::pow(double, int),有些用户说这个版本可能更快。

std::pow(double, int)std::pow(double, double)快吗?如果有,那要快多少?

P.S。标准样板免责声明"我已经知道过早优化是邪恶的,但我是出于学术目的而提出这个优化问题,或者我已经确定将代码行/代码作为瓶颈"

1 个答案:

答案 0 :(得分:-2)

期望:

std :: pow(double,int)是log(n)运行时的日志减少for循环。

std :: pow(double x,double y){exp(log(x)* y); }

应该非常接近。