Esta lección trata de qué es un «cuello de botella» en la entrada/salida y cómo detectarlo y eliminarlo. Veremos por qué las operaciones de disco y red son significativamente más lentas que la RAM, qué antipatrones son frecuentes (lectura byte a byte con
read(), registros síncronos y otros), cómo ayudan los búferes (
BufferedInputStream,
BufferedReader), los perfiladores (
VisualVM,
JProfiler) y las mediciones de tiempo con
System.
currentTimeMillis
(). Realizaremos un experimento práctico leyendo el archivo
"bigfile.txt", compararemos la velocidad con y sin búfer, veremos la influencia de SSD/HDD y de la red y enumeraremos errores típicos.