2011-01-03 4 views
10

Pour l'université, j'effectue des modifications de bytecode et analyse leur influence sur les performances des programmes Java. Par conséquent, j'ai besoin de programmes Java --- dans le meilleur des cas utilisés dans la production --- et de repères appropriés. Par exemple, j'ai déjà HyperSQL et de mesurer ses performances par le programme de référence PolePosition. Les programmes Java s'exécutant sur une machine JVM sans compilateur JIT. Merci de votre aide!Benchmarking des programmes Java

P.S .: Je ne peux pas utiliser de programmes pour comparer les performances de la JVM ou du langage Java lui-même (tel que Wide Finder).

+0

Ce n'est pas très clair ce que vous voulez faire. Pouvez-vous l'expliquer un peu plus loin? – Riduidel

+1

code octet n'est généralement pas optimisé, à la place, le JIT optimisera le code natif qu'il crée. En tant que tel, vous trouverez peut-être que changer le byte-code n'améliorera pas les performances de la façon dont vous pourriez vous attendre car vous dépendez de la façon dont il est transformé en code natif. –

+0

@ Peter, je pense qu'il cherche des scénarios qui donne les meilleures performances – UVM

Répondre

0

Tout programmeur expérimenté vous dira qu'une optimisation prématurée est pire qu'aucune optimisation. C'est un gaspillage de ressources au mieux et une source de problèmes futurs (et actuels) infinis au pire.

Sans contexte, aucune application, même avec les journaux de référence, ne vous dira rien. Je peux avoir une boucle là-dedans qui prend 10 heures à compléter, le benchmark montrera qu'il prend presque toujours, mais je m'en fous parce que ce n'est pas critique de performance. Une autre boucle ne prend qu'une milliseconde, mais cela peut être trop long car cela m'empêche d'intercepter les paquets de données entrants arrivant à des intervalles de 100 microsecondes. Deux extrêmes, mais les deux peuvent arriver (même dans la même application), et vous ne le sauriez jamais, sauf si vous connaissiez cette application, comment elle est utilisée, ce qu'elle fait, dans quelles conditions et exigences.

Si une interface utilisateur prend 1/2 seconde pour le rendre peut être trop long ou pas de problème, quel est le contexte? Quelles sont les attentes de l'utilisateur?

8

Caliper est un outil fourni par Google pour le micro-benchmarking. Il vous fournira des graphiques et tout. Les gens qui ont mis cet outil ensemble sont très familiers avec le principe de «l'optimisation prématurée est la racine de tout le mal», (selon le point de jwnting) et sont très prudents dans l'explication du rôle de l'analyse comparative.