Rendimiento de transmisión de Java 8 vs. Colecciones tradicionales
Recientemente se aventuró en Java 8 y realizó una prueba comparativa informal para comparar el rendimiento de su Stream API con las colecciones clásicas. Su prueba implica filtrar una lista de números enteros, extraer la raíz cuadrada de números pares y almacenar los resultados en una lista doble. Sin embargo, está cuestionando la validez de su prueba y está ansioso por aclarar las verdaderas implicaciones en el rendimiento.
Evaluación de la prueba comparativa
Sus resultados iniciales, que indicaban transmisiones ser más lento que las colecciones, generó preocupación. Para garantizar una evaluación más confiable, es esencial abordar los posibles errores y realizar una prueba justa. Aquí hay algunas consideraciones:
Resultados adecuados de evaluación comparativa
Siguiendo estas recomendaciones, revisemos el evaluación del desempeño utilizando JMH y estrategias de evaluación comparativa mejoradas:
@OutputTimeUnit(TimeUnit.NANOSECONDS) @BenchmarkMode(Mode.AverageTime) @OperationsPerInvocation(StreamVsVanilla.N) public class StreamVsVanilla { public static final int N = 10000; static ListsourceList = new ArrayList(); static { for (int i = 0; i vanilla() { List result = new ArrayList(sourceList.size() / 2 1); for (Integer i : sourceList) { if (i % 2 == 0){ result.add(Math.sqrt(i)); } } return result; } @Benchmark public List stream() { return sourceList.stream() .filter(i -> i % 2 == 0) .map(Math::sqrt) .collect(Collectors.toCollection( () -> new ArrayList(sourceList.size() / 2 1))); } }
Resultados:
Benchmark Mode Samples Mean Mean error Units StreamVsVanilla.stream avgt 10 17.588 0.230 ns/op StreamVsVanilla.vanilla avgt 10 10.796 0.063 ns/op
Resultados
Contrariamente a los resultados iniciales, el punto de referencia JMH muestra claramente que el enfoque de recopilación tradicional es significativamente más rápido que el enfoque de flujo en este escenario particular.
Conclusión
Con base en estos resultados mejorados de evaluación comparativa, podemos concluir que:
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3