¿Cómo recorrer el mapa de manera eficiente? Lo que usas comúnmente puede no ser necesariamente el más rápido.
Como dice el título del artículo, atravesar el Mapa es un comportamiento común en el proceso de desarrollo y hay muchas formas de implementarlo. Este artículo lo guiará a través de un recorrido del Mapa más eficiente.
Primero, echemos un vistazo a las formas de recorrer un mapa.
Este debería considerarse un método de uso más común y más fácil de entender.
keySet: obtenga todas las claves en el mapa y luego recorra cada clave por turno.
Este es el método que más uso en el desarrollo diario. Es simple y fácil de entender.
Pero ¿qué pasa con su rendimiento? El secreto se revelará más tarde.
No sé cuántas personas han usado el modo paralelo en Java8. Es esencialmente un método de procesamiento paralelo.
¿Cómo es el rendimiento? Se revelará más tarde.
Si eso no funciona, ¿por qué no intentas buscar ayuda exterior?
El entorno de prueba es el siguiente: Intel i7-4790 3,60 GHz, 16 GB
El conjunto de prueba es un conjunto de mapas pequeño (alrededor de 100 elementos) y el consumo de tiempo de cada uno El método es el siguiente:
Se puede ver en los resultados que cuando la cantidad de datos es relativamente pequeña, el uso de foreach en Java 8 está temporalmente por delante.
El conjunto de pruebas es una colección de mapas con un volumen de datos de elementos de 1000. Los resultados de la prueba son los siguientes:
Del conjunto de resultados, en el caso de un volumen de datos medio, el MutableMap en la colección Eclipse (CS) de ayuda exterior tuvo el desempeño más destacado y ganó el primer lugar.
Seguido por foreach en Java 8, ocupando el segundo lugar.
El conjunto de prueba es un conjunto de mapas con un volumen de datos de elementos de 100.000 (nivel 100.000). Los resultados de la prueba son los siguientes:
El método 1 que utiliza iterador y Map.Entry ocupa el primer lugar. y lidera el segundo lugar. El nombre es de casi 7s.
El segundo lugar lo ocupa MutableMap en las colecciones de Eclipse (CS), que funciona bien con grandes volúmenes de datos.
A lo que me refiero es que foreach en Java 8, que anteriormente funcionó bien con volúmenes de datos pequeños, ocupa un lugar relativamente bajo, pero aún supera a Stream API usando Java 8.
Hay otro fenómeno: la Stream API paralela en Java 8, que utiliza cálculos en modo paralelo, funciona mejor que foreach y stream api cuando se trata de grandes cantidades de datos.
La siguiente tabla muestra el rendimiento de cada método bajo diferentes cantidades de datos
En desarrollo normal, cuando la cantidad de datos no es demasiado grande, en términos de ayuda externa, en Java 8 El método foreach 3 tiene un rendimiento excelente. El rendimiento del método paralelo 8 de Stream API para operaciones paralelas no es tan bueno como se esperaba, y el rendimiento del método 7 de Stream API es bastante satisfactorio.
Enumera principalmente una variedad de formas de recorrer Map. Cada método de implementación tiene sus propias características. A algunas personas les gusta foreach por ser fácil de entender; a otras les gusta stream por ser limpio y ordenado.
Desde una perspectiva de rendimiento, cuando la cantidad de datos es pequeña: se prefiere el método 3 de Java8 Foreach.
Los métodos Iterator y Map.Entry 1 se recomiendan para grandes volúmenes de datos.
Soy Dahuang, un programador que solo puede escribir HelloWorld. Nos vemos en el próximo número.