[Java] La réflexion est-elle vraiment lourde? Comparaison des performances

Objectif

Je voulais utiliser la réflexion lors de la création de la classe de base, mais était-ce vraiment lourd parce que j'avais l'information que la réflexion était lourde? Je voulais savoir à quel point c'était lourd, alors je l'ai mesuré.

Environnement de vérification

Code source de vérification

** 1. Instanciation normale **

qiita.java


private static Oimo getInstance01() throws Exception {
	return new Oimo();
}

** 2. Génération d'instances à l'aide de la réflexion **

qiita.java


private static Oimo getInstance02() throws Exception {
	Class<?> clazz = Class.forName("kensho01.Oimo");
	return (Oimo) clazz.newInstance();
}

Procédure de mise en œuvre

Résultats de la mise en œuvre

** 1. Instanciation normale **

--Première fois: 4 millisecondes --Deuxième fois: 3 millisecondes --Troisième fois: 3 millisecondes --Moyenne: 3,33 millisecondes

** 2. Génération d'instances à l'aide de la réflexion **

--Première fois: 63 millisecondes --Deuxième fois: 69 millisecondes --Troisième fois: 65 millisecondes --Moyenne: 65,67 millisecondes

Considération

On peut voir qu'il faut en moyenne 65,67 millisecondes pour une génération d'instance utilisant la réflexion, ce qui est environ 20 fois plus longue qu'une génération d'instance normale de 3,33 millisecondes. À partir de là, il a été constaté que l'instanciation utilisant la réflexion est lourde et que l'utilisation du code source du produit doit être évitée autant que possible, en dehors du code de test.

A bientôt (^_^) Noshi

Recommended Posts

[Java] La réflexion est-elle vraiment lourde? Comparaison des performances
Qu'est-ce que 'java
Qu'est-ce que Java <>?
Qu'est-ce que 'java
[Java] Comparaison de cartes
Comparaison du framework Java
La comparaison d'énumération est ==, et equals est bonne [Java]
Java Performance Chapitre 1 Introduction
Comparaison de la notation de la version Java
Réglage des performances de l'application Java
Qu'est-ce que l'encapsulation Java?
Qu'est-ce que la technologie Java?
Qu'est-ce que Java API-java
[Développement] Comparaison du framework Java
[Java] Qu'est-ce que flatMap?
Java Performance Chapitre 3 Boîte à outils Java Performance
[Java] Qu'est-ce que ArrayList?
L'évaluation des courts-circuits est-elle vraiment rapide? Différence entre && et & en Java