Hola
Necesito manejar archivos de 2 giga aproximadamente. Estoy usando la
clase BufferedInputStream ¿qué tamaño tendría que asignarle? Porque no
me permite asignar 1 giga. Supongo es distinto en la realidad, sobre
cuántos bytes maneja internamente.
Muchas gracias.
Marcos
Marcos escribió:
> Hola
> Necesito manejar archivos de 2 giga aproximadamente. Estoy usando la
> clase BufferedInputStream ¿qué tamaño tendría que asignarle? Porque no
> me permite asignar 1 giga. Supongo es distinto en la realidad, sobre
> cuántos bytes maneja internamente.
>
> Muchas gracias.
> Marcos
>
>
>
euh... ¿para qué asignar un buffer tan grande para un stream?
¿Probaste con los valores predeterminados del buffer (es decir, sin
tocar nada)? ¿qué pasa? ¿tarda mucho (después de todo, 2GB, son 2GB...)?
Marcos escribió:
> Hola
> Necesito manejar archivos de 2 giga aproximadamente. Estoy usando la
> clase BufferedInputStream ¿qué tamaño tendría que asignarle? Porque no
> me permite asignar 1 giga. Supongo es distinto en la realidad, sobre
> cuántos bytes maneja internamente.
>
> Muchas gracias.
> Marcos
>
>
>
euh... ¿para qué asignar un buffer tan grande para un stream?
¿Probaste con los valores predeterminados del buffer (es decir, sin
tocar nada)? ¿qué pasa? ¿tarda mucho (después de todo, 2GB, son 2GB...)?
De nada. No probé tu clase (perdón, pero en este momento no tengo
tiempo), pero te recomiendo mirar las clases para manejar streams de
Apache Commons IO (http://commons.apache.org/io/) en vez de andar
escribiendo los bytes 'a mano' como hacés al final del método zip(List),
en particular el método copyLarge de IOUtils.
¡Buena suerte!
Marcos Lemos escribió:
> ---------------------------------
>
> ¡Capacidad ilimitada de almacenamiento en tu correo!
> No te preocupes más por el espacio de tu cuenta con Correo Yahoo!:
> http://correo.yahoo.com.mx/
>
El tamaño del buffer no depende del tamaño del archivo original sino de la relación: consumo de memoria vs. tiempo de proceso que quieras ajustar.
Generalmente el default o "a ojo" funcionan bien. Si aun así querés obtener un valor mejor, instalá el sistema en el mejor ambiente real que puedas conseguir y empezá a hacer una búsqueda binaria. Osea:
a) Arrancá con 2Mb y medí
b) Ahora proba con 4Mb y medí. Fue mejor? fue peor? Anda acercando el número hasta obtener el mejor tiempo.
Y apuesto que cuando termines vas a lograr una mejora muy sutil y la próxima vez no tuneas a ese nivel porque tiene poco sentido :)
Abrazo y suerte. Contanos como te fue.
Pensaste en invocar a algun otro programa de compresion por linea de comando (javalang.Runtime)
que haga el trabajo por vos?