2011-02-10 14 views
5

Solo me pregunto si, en general, es una buena idea comprimir los archivos jar que se enviarán con una aplicación de escritorio (sin acceso a la red a los archivos jar), o si la descompresión tendrá un impacto mayor que el archivo io.¿Deben comprimirse los archivos jar para aplicaciones de escritorio?

EDIT: Gracias por las respuestas hasta ahora, y lo siento por ser un poco confuso aquí. No estaba hablando de enviar los archivos jar al cliente, sino del formato óptimo para los archivos jar en el disco cuando se inicia la aplicación. Sé que los archivos jar son archivos zip y pueden ser servidos con diferentes niveles de compresión (o sin compresión), y me preguntaba directamente cómo la compresión podría alterar el rendimiento de inicio, no solo en mi cuadro dev (tiene un disco SSD rápido en él , pero también en discos más lentos).

+0

El formato interno de un java jar es un archivo ZIP. Cualquiera de los conjuntos de herramientas se puede usar con cualquier tipo de archivo. Los archivos pueden estar comprimidos (acceso más rápido al disco) o no comprimidos (menos CPU). Déjalos como los obtienes. – BillThor

Respuesta

2

Espero que la respuesta dependa de su aplicación. Sin embargo, debería ser fácil determinar experimentalmente si los JAR comprimidos ofrecen un inicio más rápido o más lento para su aplicación. Simplemente construya su archivo JAR de aplicación con compresión desactivada y compresión, y compare los tiempos de inicio de la aplicación. (Pruébelo en diferentes máquinas, por ejemplo, con discos lentos, discos rápidos, SSD y con diferentes cantidades de RAM. Tenga en cuenta que algunos sistemas operativos almacenan en caché los archivos de manera agresiva y toman esto en cuenta en sus mediciones de temporización)

usted está en él, también se debe investigar el impacto de los diferentes niveles de compresión (a través de los jar opciones de comando) y el uso de pack200


Una vez dicho esto, mi primera impresión es que la diferencia entre el comprimido y sin comprimir para instalar localmente Los JAR serán lo suficientemente pequeños para que el usuario apenas note la diferencia.

1

En casi cualquier situación de escritorio razonable, el costo de disco IO es mucho mayor que el costo de compresión. Es casi seguro que sea una victoria para comprimir archivos.

Dicho esto, un archivo JAR ya está comprimido. Compensar doblemente cosas generalmente no vale la pena el esfuerzo. Así que diría que no, no compres tus archivos JAR ya que están comprimidos.

+3

Sospecho que la pregunta del OP tenía más que ver si deberían comprimir * sus * JAR antes de la entrega, no comprimir los archivos que alguien más les haya dado. Los archivos JAR no tienen que comprimirse, es solo un archivo zip, y es bastante legítimo no comprimir los contenidos. –

+1

* "En casi cualquier situación de escritorio razonable, el costo del disco IO es mucho mayor que el costo de la compresión. Es casi seguro que será una ventaja comprimir los archivos." * - No estoy seguro de que sea cierto. En una caja de Linux con mucha memoria, el sistema operativo almacena en caché los archivos en la memoria. La velocidad de lectura podría (en teoría) aproximarse a la velocidad de una copia de memoria a memoria. –

+0

No creo que los archivos estén en la memoria caché al principio, pero los bloques de datos de los archivos estarán en la memoria caché cuando la aplicación cargó algunas clases. Al menos los bloques cubiertos con los archivos de clase. – Daniel

Cuestiones relacionadas