Maison >Java >javaDidacticiel >Comparaison basée sur des benchmarks des fonctions Java

Comparaison basée sur des benchmarks des fonctions Java

王林
王林original
2024-04-20 14:39:011096parcourir

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.

Comparaison basée sur des benchmarks des fonctions Java

Comparaison des fonctions Java basées sur des benchmarks

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.

Benchmarking avec JMH

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.

Comparaison des fonctions Java en action

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();
}

Configuration d'un benchmark JMH

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);
    }
}

Exécutez le benchmark JMH

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 .

Analyse des résultats

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.

Conclusion

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn