Comment vérifier si le compilateur JIT est éteint en Java
Je voudrais savoir comment faire pour vérifier si le compilateur JIT est éteint. J'ai le code suivant qui est le but de transformer le compilateur JIT off.Le problème est, je ne suis pas sûr si c'est effectivement le faire. Donc je me demandais si il existe un moyen de vérifier si l'équipe est à l'arrêt.
J'ai regardé le Compilateur de la classe, mais il n'y a pas de méthode comme isDisabled/enabled()
.
Code:
Compiler.disable();
Toute aide ou d'orientation sera fortement appréciée.
Vous voulez vérifier ce à exécution?
Oui, je tiens à vérifier lors de l'exécution.
Je devrais peut-être ajouter pourquoi je fais cela. Fondamentalement, nous avons un programme qui est censé temps combien de temps il faut pour exécuter un algorithme (par exemple quicksort) est basé sur la taille des données. Ce que nous avons remarqué, c'est que les deux premières fois sont vraiment biaisé par rapport à l'autre, et nous sommes d'avis que cela est dû à l'initialisation du compilateur JIT. En conséquence, nous avons voulu voir l'effet sur le temps où l'équipe est à l'arrêt.
Il n'est pas vraiment un booléen chose, les méthodes d'optimiser et deoptimized dans les différents niveaux. Il est préférable d'utiliser un faisceau de référence qui prend en charge l'échauffement. Je voudrais utiliser JMH. Il a même compilateur de contrôle des annotations.
Une autre raison de vérifier au moment de l'exécution, j'ai une application qui semble passer à interpréter uniquement en mode après un certain point dans le temps. J'ai traqué un bogue JIT (bugs.java.com/bugdatabase/view_bug.do?bug_id=8023983) qui semble être lié. Je veux savoir si quelque chose a "whomped" mémoire et remplacé le drapeau.
Oui, je tiens à vérifier lors de l'exécution.
Je devrais peut-être ajouter pourquoi je fais cela. Fondamentalement, nous avons un programme qui est censé temps combien de temps il faut pour exécuter un algorithme (par exemple quicksort) est basé sur la taille des données. Ce que nous avons remarqué, c'est que les deux premières fois sont vraiment biaisé par rapport à l'autre, et nous sommes d'avis que cela est dû à l'initialisation du compilateur JIT. En conséquence, nous avons voulu voir l'effet sur le temps où l'équipe est à l'arrêt.
Il n'est pas vraiment un booléen chose, les méthodes d'optimiser et deoptimized dans les différents niveaux. Il est préférable d'utiliser un faisceau de référence qui prend en charge l'échauffement. Je voudrais utiliser JMH. Il a même compilateur de contrôle des annotations.
Une autre raison de vérifier au moment de l'exécution, j'ai une application qui semble passer à interpréter uniquement en mode après un certain point dans le temps. J'ai traqué un bogue JIT (bugs.java.com/bugdatabase/view_bug.do?bug_id=8023983) qui semble être lié. Je veux savoir si quelque chose a "whomped" mémoire et remplacé le drapeau.
OriginalL'auteur isaiah | 2012-02-26
Vous devez vous connecter pour publier un commentaire.
Je ne crois pas que vous pouvez activer le JIT off au moment de l'exécution.
Si vous voulez sérieusement de référence d'un programme Java, vous devriez vraiment être ignorant les quelques premières pistes. Obtenir des repères fiables dans Java est un extrêmement difficile d'affaires, vaut mieux laisser à des gens beaucoup plus intelligents que vous ou I.
Je recommande d'utiliser Étrier, qui est utilisé en interne chez Google pour microbenchmarking et est suffisamment intelligent pour réchauffer le JIT et d'autres choses. En particulier, regardez l'exemple ici, qui montre comment mesurer l'efficacité d'un algorithme de différentes tailles.
Le projet est la mise en œuvre des algorithmes que vous êtes en mesure de, ou est-il en train de faire du benchmarking?
C'est fondamentalement le fonctionnement de l'utilisateur de l'algorithme à l'aide de la réflexion puis de les analyser en termes de O la notation. Aussi, ce qui me confond est, sur le IBM site (publib.boulder.ibm.com/infocenter/realtime/v1r0/...), il ne dit comment désactiver le compilateur JIT ou suis-je mal interpréter le message?
Il peut désactiver si vous exécutez hors de cache de code. Dans ce cas, il imprime un "CodeCache est plein. Compilateur a été désactivé"
OriginalL'auteur Louis Wasserman
(Pas une réponse directe à votre question car il semble que votre essayaient d'éteindre le compilateur JIT par programme, mais en fonction de votre commentaire, ce pourrait être d'intérêt.)
Si vous souhaitez désactiver le compilateur JIT sur Sun/Oracle JVM, vous devriez essayer le
-Xint
:jusqu'à la version de Java est-ce pris en charge? parce que je suis
javac: invalid flag: -Xint
.Il est disponible dans les options lorsque vous tapez
java -X
dans Oracle JRE 8. De savoir si ou de ne pas utiliser le compilateur JIT est un JRE décision, cela n'a rien à voir avec la compilation du code source en bytecode (cejavac
n'): vous avez probablement ce message, car vous l'utilisez avecjavac
pasjava
.oh merde... vous avez entièrement raison; je me sens retardé maintenant, je savais que tout ce que vous dit 🙂
OriginalL'auteur Bruno
Jvm IBM certainement l'appui de l'interface Java java/lang/Compilateur.disable() et .activer() qui a été introduit dans Java 5, je crois. Qui comprend WebSphere Temps Réel (ce qui est une JVM conçu pour offrir plus de performances prévisibles) ainsi que de notre "standard" de la Jvm. Si vous appelez de désactiver(), elle permet d'éviter JIT compilations jusqu'à ce que vous appelez enable().
Je travaille pour IBM sur le compilateur JIT de l'équipe. Nous n'avons pas l'habitude de recommander des gens à utiliser cette interface, parce interférer avec compilation JIT heuristique est généralement pas une bonne idée, mais il y a de raisonnable en temps réel des scénarios où vous l'utiliser.
OriginalL'auteur Mark Stoodley
Dans l'article Caractéristiques de Performance et des Outils.
Ainsi, vous pouvez en déduire que lorsque la variable n'est pas définie, ou quelque chose d'autre que NONE, le JIT est activé.
OriginalL'auteur Edwin Dalorzo
Vous pouvez l'impression de méthodes quand ils compilé, avec `-XX:+PrintCompilation si votre méthode n'est pas imprimé ou devient soudainement plus rapide après c'est les imprimer, vous pouvez voir la cause probable.
OriginalL'auteur Peter Lawrey