std::accumulate
e std::reduce
faz quase a mesma coisa.
Resumo de std::reduce
diz tudo:
similar to `std::accumulate`, except out of order
Em muitos casos, essas funções devem produzir o mesmo resultado final e exibir a mesma funcionalidade geral. É óbvio que, se você tiver alguma computação de carga muito pesada, etc., poderá experimentar std::reduce
a parrelização. Ou seja. qual é a sabedoria convencional aqui do ponto de vista dos pássaros - você deve sempre se ater ao std :: acumulate, a menos que seja explicitamente otimizado? ou deve usar como padrão std::reduce
?
Se std::reduce
(com a política padrão / sem execução escolhida) for sempre pelo menos tão rápido quanto std::accumulate
(salve algumas instruções), acho que o acúmulo só deve ser usado quando a ordem é rigorosa.
fonte