提问人:darune 提问时间:1/22/2020 最后编辑:darune 更新时间:2/7/2020 访问量:863
如何在 std::reduce 和 std::accumulate 之间进行选择?
How to choose between std::reduce and std::accumulate?
问:
std::accumulate
和 std::reduce
执行几乎相同的操作。
总结说明了一切:std::reduce
similar to `std::accumulate`, except out of order
在许多情况下,这些函数应产生相同的最终结果并表现出相同的整体功能。很明显,如果你有一些非常重的负载计算等,你可以尝试进行交换。即。从鸟类的角度来看,这里的传统智慧是什么 - 除非明确优化,否则您是否应该始终坚持生硬的 std::accumulate?还是应该默认使用?std::reduce
std::reduce
如果(选择默认/未选择执行策略)总是至少与(保存一些指令)一样快,那么我认为只有在订单严格时才应该使用累积。std::reduce
std::accumulate
答:
11赞
Anthony Williams
1/22/2020
#1
是的,我会一直使用,除非您知道您需要 的订单保证。这为编译器提供了更大的优化自由度,在最坏的情况下,无论如何都是相同的。std::reduce
std::accumulate
上一个:升级后内环性能下降的原因是什么?
评论