Qué orden debo utilizar GzipOutputStream
y BufferedOutputStream
Para flujos de objetos, me encontré con que envolver la corriente tampón alrededor de la corriente gzip tanto de entrada como de salida era casi siempre significativamente más rápido . Cuanto más pequeños sean los objetos, mejor será esto. Mejor o igual en todos los casos, luego no hay flujo amortiguado.
ois = new ObjectInputStream(new BufferedInputStream(new GZIPInputStream(fis)));
oos = new ObjectOutputStream(new BufferedOutputStream(new GZIPOutputStream(fos)));
Sin embargo, para el texto y flujos de bytes consecutivos, me pareció que era un cara o cruz - con la corriente gzip alrededor de la corriente tamponada siendo sólo un poco mejor. Pero mejor en todos los casos, entonces no hay flujo amortiguado.
reader = new InputStreamReader(new GZIPInputStream(new BufferedInputStream(fis)));
writer = new OutputStreamWriter(new GZIPOutputStream(new BufferedOutputStream(fos)));
que corrió cada versión 20 veces y le cortó la primera pasada y promedió el resto. También probé buffer-gzip-buffer que era ligeramente mejor para objetos y peor para texto. No jugué con tamaños de búfer en absoluto.
Para las secuencias de objetos, probé 2 archivos de objetos serializados en 10s de megabytes.Para el archivo más grande (38 mb), fue 85% más rápido en la lectura (0,7 frente a 5,6 segundos) pero en realidad un poco más lento para la escritura (5,9 frente a 5,7 segundos). Estos objetos tenían algunas matrices grandes que pueden haber significado escrituras más grandes.
method crc date time compressed uncompressed ratio
defla eb338650 May 19 16:59 14027543 38366001 63.4%
Para el archivo más pequeño (18mb), era 75% más rápido para leer (1,6 frente a 6,1 segundos) y un 40% más rápido para escribir (2,8 frente a 4,7 segundos). Contenía una gran cantidad de objetos pequeños.
method crc date time compressed uncompressed ratio
defla 92c9d529 May 19 16:56 6676006 17890857 62.7%
Para el lector de texto/escritor he utilizado un archivo de texto CSV 64mb. La secuencia gzip alrededor de la secuencia amortiguada fue 11% más rápida para la lectura (950 frente a 1070 milisegundos) y ligeramente más rápida al escribir (7.9 versus 8.1 segundos).
method crc date time compressed uncompressed ratio
defla c6b72e34 May 20 09:16 22560860 63465800 64.5%
"desea comprimirlos para que ajuste BIS con un GIS" - GIS no comprime. Descomprime. FWIW Estoy luchando por comprender su punto general en la última parte de su respuesta. – bacar