std::accumulate
y std::reduce
hace casi lo mismo.
Resumen de lo std::reduce
dice todo:
similar to `std::accumulate`, except out of order
En muchos casos, estas funciones deberían producir el mismo resultado final y exhibir la misma funcionalidad general. Es obvio que si tiene un cálculo de carga muy pesado, etc., puede experimentar std::reduce
para la parrelización. Es decir. ¿Cuál es la sabiduría convencional aquí desde el punto de vista de las aves? ¿Debería siempre apegarse al std :: acumular contundente a menos que se optimice explícitamente? o simplemente debería usar de manera predeterminada std::reduce
?
Si std::reduce
(con la política predeterminada / sin ejecución elegida) siempre es al menos tan rápido como std::accumulate
(guarde algunas instrucciones), entonces creo que acumular solo debe usarse cuando el orden es estricto.
fuente