std::accumulate
und std::reduce
macht fast das gleiche.
Zusammenfassung von std::reduce
sagt alles:
similar to `std::accumulate`, except out of order
In vielen Fällen sollten diese Funktionen das gleiche Endergebnis liefern und die gleiche Gesamtfunktionalität aufweisen. Es ist offensichtlich, dass Sie mit einer sehr hohen Lastberechnung usw. experimentieren können, std::reduce
um eine Parrelisierung durchzuführen. Dh. Was ist die konventionelle Weisheit hier aus der Vogelperspektive - sollten Sie sich immer an die stumpfe std :: accumulate halten, wenn Sie nicht explizit optimieren? oder sollte nur standardmäßig verwendet werden std::reduce
?
Wenn std::reduce
(mit Standard / keine Ausführungsrichtlinie gewählt) immer mindestens so schnell ist wie std::accumulate
(außer ein paar Anweisungen), dann sollte Akkumulieren meiner Meinung nach nur verwendet werden, wenn die Reihenfolge streng ist.