Maison >Java >javaDidacticiel >Comparaison basée sur des benchmarks des fonctions Java
L'outil de benchmarking JMH peut être utilisé pour comparer les performances des fonctions Java. En comparant deux fonctions qui additionnent des tableaux, il a été constaté que la fonction de streaming Java (sumArray2) est supérieure à la fonction de boucle native (sumArray1) car elle tire parti de la parallélisation et fonctionne donc mieux sur les grands tableaux.
Les performances sont une considération clé lors de l'écriture de code Java. En comparant différentes fonctions, nous pouvons déterminer quelle fonction fonctionne le mieux dans un scénario spécifique.
Java Microbenchmark Suite (JMH) est une bibliothèque populaire pour l'analyse comparative en Java. Il fournit une API facile à utiliser pour créer des benchmarks et mesurer les temps d'exécution.
Comparons deux fonctions qui additionnent des éléments sur un tableau :
// 方法 1:原生循环 public static int sumArray1(int[] arr) { int sum = 0; for (int i = 0; i < arr.length; i++) { sum += arr[i]; } return sum; } // 方法 2:Java 流 public static int sumArray2(int[] arr) { return Arrays.stream(arr).sum(); }
Configurer un benchmark avec JMH est très simple. Voici un exemple de code de configuration JMH :
@BenchmarkMode(Mode.AverageTime) @OutputTimeUnit(TimeUnit.NANOSECONDS) public class SumArrayBenchmark { @Benchmark public int sumArray1() { int[] arr = new int[10000]; // 填充数组 return sumArray1(arr); } @Benchmark public int sumArray2() { int[] arr = new int[10000]; // 填充数组 return sumArray2(arr); } }
Pour exécuter le benchmark JMH, utilisez la commande suivante :
mvn clean install java -jar target/benchmarks.jar
Cette commande imprimera les résultats du benchmark, affichant le temps d'exécution de chaque fonction .
Dans l'exemple ci-dessus, fonction de flux Java sumArray2
的性能优于原生循环函数 sumArray1
. En effet, les flux Java tirent parti de la parallélisation et les avantages en termes de performances sont encore plus prononcés, en particulier avec les grands tableaux.
En effectuant une analyse comparative avec JMH, nous pouvons facilement comparer les performances des fonctions Java et déterminer quelle fonction est la plus efficace dans un scénario spécifique.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!