2008-10-14 7 views
13

Soy un n00b absoluto en la plataforma java Me gustaría saber si necesito cambiar algo en mi código para obtener los beneficios del JRE de 64 bits.Beneficios de la plataforma Java de 64 bits

o es algo así como cuando lo inicio con "java -d64" se ejecutará en algún modo turbo?

Su ayuda es muy apreciada

Respuesta

3

Usted debería tener que cambiar nada. A diferencia de C o C++, Java tiene una especificación escrita que asegura que las entradas (y otros tipos de datos) tengan siempre la misma longitud, independientemente de la plataforma en la que se encuentre.

1

Sí, no es necesario que cambie nada. Es el JRE lo que es diferente, no el código que escribes.

5

Dado que la JVM, donde se ejecuta el código, debe comportarse igual (los enteros siempre tienen 32 bits, etc.), su código está garantizado (en teoría) para ejecutarse de manera idéntica, sin importar en qué plataforma lo ejecute.

La diferencia de 32/64 viene en cómo la JVM puede optimizar el tiempo de ejecución. Entonces, aunque el bytecode ejecutado sigue siendo el mismo, podría (o no) optimizarse de una manera diferente.

En pocas palabras, un sistema de 64 bits con Java podría ejecutar el código más rápido que un sistema equivalente de 32 bits.

7

No, no necesita cambiar nada. No hay beneficio inherente al usar 64 bits. De hecho, hará que su programa sea más grande en la memoria, ya que todos los punteros se convertirán en 64 bits de ancho en lugar de 32 bits.

La única ventaja viene cuando se realizan cálculos de 64 bits, por ejemplo, usando muchos "largos" en su código o si su aplicación requiere memoria de más de 4 gb.

+0

¿No es un beneficio, al menos en Windows, la posibilidad de utilizar más memoria de aproximadamente 1,5 GB? Existe cierto límite para un proceso Java de 32 bits. http://mystyleit.com/blogs/mystyleit/archive/2009/05/27/32bit-windows-memory-and-java.aspx – Jonik

+1

¿No son las últimas JVM de 64 bits un poco más inteligentes a la hora de asignar referencias? Es decir, utilizando solo referencias de 32 bits si no necesita el total de 64 bits. Creo que lo leí en alguna parte. –

13

Mi versión anterior, aunque no era falsa, era una simplificación rápida y escrita.

Cambiar de 32 a 64 bits no hará que su aplicación funcione automáticamente más rápido, en algunos casos puede llevar a lo contrario. En el lado "negativo" Hacer una desreferenciación de los punteros de memoria en la JVM puede llevar más tiempo con punteros de 64 bits que de 32 bits. Un recolector de basura completo y la compactación de un montón de 16 GB probablemente llevará más tiempo que con un montón de 2 GB.

En el lado positivo: Existen 64 bits de instrucciones del procesador que son más eficaces que las de 32 bits. 64 bit JVM le permitirá tener un tamaño de pila 2^32 veces más grande que, ligeramente menos que, 4 GB uno que puede obtener con 32 bit. (Si puede permitirse comprar esa cantidad de RAM) Algunas JVM pueden funcionar con referencias comprimidas si tiene un tamaño de pila inferior a 4 GB, lo que le da la ventaja de las instrucciones de 64 bits sin tener que pagar el precio de eliminación de 64 bits .

Si tiene una buena JVM, yo iría a 64 bits sin importar el tamaño del montón, solo prepárese para tener que dar un golpe de rendimiento por tener un gran montón.

8

No creo que 64 bit JVM gane rendimiento de la aplicación? ¿Cómo?

De hecho, los procesadores de 64 bits son un poco más lentos. Tienen una tubería de descodificación más complicada (compatibilidad con versiones anteriores de operaciones de 32 bits). Necesitan más capacidad de memoria (todos los punteros tienen el doble de tamaño ¿no?). Lo único que tienes en el procesador de 64 bits es mucha RAM.Y el tamaño es la velocidad, como sabemos. Una gran cantidad de RAM puede mejorar el rendimiento de algunas aplicaciones (si la aplicación puede usarlo). Entonces 64 bit - no. Una gran cantidad de RAM, definitivamente sí.

Hay una cosa más que los procesadores de 64 bits podrían hacer más rápido. Escritura/lectura atómica de números de 64 bits. Si trabaja con números de 64 bits (largo en java), los procesadores de 64 bits serían mejores, porque tienen instrucciones CAS automáticas para trabajar con ese tipo de números.

+2

el conjunto de instrucciones AMD64 expone más registros a los programas, lo que conduce a una mejora de la velocidad de ejecución potencial – Sebastian

2

¿Tiene algún JNI en el código de la aplicación? Entonces tal vez necesites preocuparte por los binarios nativos de 32 contra 64 bits.

32 o 64 es todo lo mismo a su código de Java. Los aspectos de rendimiento ya parecen estar bien cubiertos por los carteles anteriores.

0

He encontrado que las JVM de 64 bits han sido más lentas que las versiones de 32 bits. Sin embargo, con la última versión de la actualización Java 6 14, he visto que muchas de mis pruebas son marginalmente más rápidas con la versión de 64 bits que con la de 32 bits. De cualquier manera, solo hay una diferencia de 5% a 10%.

Si su programa utiliza una versión de 32 bits o de 64 bits, depende de la elección de JVM que utilice. Como se mencionó, debe verificar que tenga bibliotecas compartidas apropiadas. (o, idealmente, ninguno)

La principal diferencia es que puede utilizar más memoria esp si necesita 4 GB o más.

0

Prueba esto:

public class Benchmark { 
public static void main(String args[]) { 
long time = System.currentTimeMillis(); 
for (int a = 1; a < 900000000; a++) { 
    for (int b = 1; b < 20; b++) { 
    } 
} 
long time2 = System.currentTimeMillis() - time; 
System.out.println("\nTime counter stopped: " + time2); 

}

En 32 y 64 bits y se ríen de la diferencia.

+5

Una descripción de la diferencia sería útil en este caso. –

Cuestiones relacionadas