“std::p ow(double, int)”比“std::p ow(double, double)”快吗?如果是,快
Is `std::pow(double, int)` faster than `std::pow(double, double)`? if yes, how much faster?
我看到了这个关于std::pow
的老问题:什么更有效率?使用 pow 进行平方还是只是将其与自身相乘?
老问题提到std::pow
有一个std::pow(double, int)
的变体,一些用户说这个版本可能更快。
std::pow(double, int)
比std::pow(double, double)
快吗? 如果是,快多少?
附言标准样板免责声明关于"我已经知道过早优化是邪恶的,但我出于学术目的提出这个优化问题,或者我已经将那行/代码块确定为瓶颈">
期望:
std::p ow(double, int( 是 log(n( 运行时的对数减少循环。
std::p ow(double x, double y( { exp(log(x( * y(; }
应该很接近。
<小时 />来自评论:
- en.cppreference.com/w/cpp/numeric/math/pow (7(自C++11以来,"如果任何参数具有整数类型,则将其转换为双精度"。 – Bob__ 四月 11 '18 在 20:10
- 我对这种说法的解释(我可能是错的,库实现者可能不同意(是,在 C++11 之前,它们可能有不同的实现,但从 C++11 开始,它们应该共享相同的,而参数只是简单地强制转换。 – Bob__ 四月 11 '18 在 20:25
相关文章:
- C++标准是否允许<double>在没有开销的情况下实现 std::可选
- 使用 std::vector<double> 访问由 std::unique_ptr<double[2] 管理的数据>
- 将 std::vector<double> 从 C++ 包装到 C 以在 Swift 中使用
- test1.cpp:9:77:错误:对"(const std::normal_distribution) <double>(std::mt19937&)"的调用不匹配
- "+=" 操作在类型之间不起作用 std::复杂<double>和__complex__双精度
- "std::function<double(double)>"到"double (*)(double)"之间的转换
- C++ 模板函数无法将"std:string"转换为"double"作为回报
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 如何在满足常量表达式的同时将整数传递给指针,传递给 std::array<double、integer>?
- 将 mwArray 转换为 std::vector<double>
- 在 std::unordered_set <double>中插入多个非数字
- 将双指针作为参数传递给需要引用 std::vector <double>的函数
- 从 std::vector<double> 到 Python 列表的转换失败(提升 python)
- 将 std::shared_ptr<<std::vector<double>> 传递给函数
- 在调用中使用 std::vector,<double>但收到有关 std::vector<double、std::分配器>正在使用的错误<double>
- pybind11:如何包装以 std::vector<double> 为参数以避免数据复制的 C++ 函数
- std::vector using back(), pop_back(), push_back(), 得到'double free or corruption'错误
- 转换 cv::mat 转换为 std::矢量<double>并发症
- 在 boost::<double>asio::buffer 中使用像 std::vector<std::complex> 这样的参数
- 如何将 std::valarray<double> 与 gsl 集成?