[JAVA] Comment effectuer un micro-bench tout en modifiant les arguments de VM

Je pense qu'il y a des cas où vous souhaitez prendre un micro-benchmark tout en modifiant l'argument VM. Pour les arguments qui affectent le compilateur JIT, il suffit d'exécuter le programme et de mesurer le temps Je ne peux pas bien mesurer l'effet. En effet, le compilateur JIT s'exécute et optimise le code au moment déterminé par la machine virtuelle pendant l'exécution du programme, il n'est donc pas possible de mesurer l'efficacité de la modification de l'argument de la machine virtuelle.

Utilisation de JMH

Dans de tels cas, il est pratique d'utiliser l'outil d'analyse comparative JMH. Comment utiliser JMH est expliqué dans cet article, donc à partir de maintenant, le benchmark dans JMH J'expliquerai comment spécifier l'argument VM à l'époque.

Comment spécifier des arguments de VM

Vous pouvez spécifier l'argument VM en ajoutant l'annotation Fork à la méthode à évaluer comme indiqué ci-dessous et en utilisant l'attribut JvmArgsAppend. Dans cet exemple, "-XX: -Inline" est spécifié.

	@Benchmark
	@Fork(jvmArgsAppend = "-XX:-Inline") //Spécifiez les arguments de VM avec des annotations
public String Aucune extension en ligne() {
		return execute();
	}

De plus, en implémentant comme suit, il est possible de comparer la présence ou l'absence d'arguments VM en même temps.

	@Benchmark
public String Avec extension en ligne() {
		return execute();
	}

	@Benchmark
	@Fork(jvmArgsAppend = "-XX:-Inline") //Spécifiez les arguments de VM avec des annotations
public String Aucune extension en ligne() {
		return execute();
	}

Recommended Posts

Comment effectuer un micro-bench tout en modifiant les arguments de VM
Résumé de l'écriture des arguments d'annotation
Résumé de la mise en œuvre des arguments par défaut en Java
8 Correspond à plusieurs arguments
Comment développer OpenSPIFe
Comment utiliser Map
Comment écrire des rails
Comment utiliser rbenv
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser java.util.logging
Comment utiliser la carte
Comment utiliser collection_select
Comment utiliser Twitter4J
Comment installer Docker
Comment utiliser MapStruct
Comment utiliser TreeSet
Comment désinstaller Rails
Comment installer docker-machine
Comment faire un pot ombré
Comment écrire docker-compose
Comment utiliser l'identité
Comment utiliser le hachage
Comment écrire Mockito
Comment créer docker-compose
Comment installer MySQL
Comment écrire un fichier de migration
Comment construire android-midi-lib
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
Comment utiliser Map
Comment repousser la barre oblique \
Comment concaténer des chaînes
Comment gérer l'erreur ERREUR: lors de l'exécution de gem ... (Gem :: FilePermissionError)