2011-01-11 12 views
14

Me pregunto si hay algún recurso en la web donde se comparen las diferentes versiones de Sun Java VM por velocidad.Java Performance History

Algo como the PyPy speed timeline sería óptimo, porque estoy interesado en la cantidad de progreso que realmente se hizo con el tiempo.

¿Alguien sabe de un proyecto así?

+1

¿Por velocidad de qué? La biblioteca de clases contiene miles de clases, y cada cambio de JVM puede mejorar/ridiculizar el rendimiento de clases/métodos específicos.Entonces no creo que puedas tener una respuesta general a esto. ¿Está interesado en alguna parte/aspecto específico del idioma o la biblioteca de la clase? –

+0

No, no la biblioteca de clases. Me interesan los puntos de referencia que muestran las mejoras de velocidad del código generado por el JITC sobre el historial de versiones. –

Respuesta

2

No conozco ningún proyecto de este tipo. Sin embargo, puede hacerlo usted mismo:

  • Las versiones antiguas de Java (volver a 1.1) todavía están disponibles para su descarga desde this page.
  • El sitio "Benchmark Game" tiene implementaciones Java de 10 puntos de referencia que puede usar.

Pero tenga en cuenta que los puntos de referencia generales son notorios por no ser predictivos de cómo funcionan las aplicaciones reales. Y el benchmarking de Java tiene problemas únicos debido a cosas como la carga de clases, la compilación de JIT y el ajuste y ajuste de los montones.


Igouy comentarios:. "puntos de referencia son conocidos por no ser necesariamente predictiva de cómo las aplicaciones reales realizar también aplicaciones reales no son necesariamente predictivos de cómo otras aplicaciones reales realizan Alguien me dijo que fasta,. k-nucleótido, complemento inverso y regex-dna realmente fueron lo que escribieron en el trabajo, para ellos esos pequeños programas son "aplicaciones reales".

No estoy diciendo que los puntos de referencia no son predictivos. El problema ocurre cuando alguien toma un típico punto de referencia o un conjunto de puntos de referencia, y luego los usa para predecir cómo funcionará una aplicación específica (o peor, "todas las aplicaciones"). Con este enfoque, es una cuestión de suerte si la evaluación comparativa hace una predicción precisa. Esto es esencialmente lo que está haciendo el PO.

Un mejor enfoque podría ser elegir un punto de referencia (o escribir uno) que coincida con lo que hace la aplicación. Pero incluso con este enfoque, la predicción depende de correctamente que coincida con los atributos clave relacionados con el rendimiento del índice de referencia y la aplicación real. Y, lo más importante, no hay forma de saber si lo ha hecho correctamente, hasta después de haber implementado su aplicación ... para entonces ya es demasiado tarde para usar la predicción.

Por lo tanto, incluso si su evaluación comparativa resulta haber hecho una predicción exacta, no se puede determinar de manera objetiva a priori si una predicción es probable que sea preciso.

Obviamente, si el "punto de referencia" es esencialmente la aplicación real, es probable que pueda confiar en las predicciones. Pero claramente, eso no es lo que el PO intenta hacer. Y, además, todavía hay problemas (como la ampliación del tamaño del problema) que pueden confundir las predicciones si no las tiene en cuenta.

+0

No tengo tiempo para eso actualmente, así que esperaba que alguien ya lo haya hecho. ¿Podría ser que hay problemas de licencia? Una vez escuché que MS está prohibiendo la evaluación comparativa del CLR. –

+0

@Axel Gneiting: no existen problemas de licencia con Java. –

+0

@Axel Gneiting: no existen tales problemas de licencia con .Net, ya sea – igouy