Performances du flux Java 8 par rapport à. Collections traditionnelles
Vous vous êtes récemment aventuré dans Java 8 et avez mené une évaluation informelle pour comparer les performances de son API Stream par rapport aux collections classiques. Votre test consiste à filtrer une liste d'entiers, à extraire la racine carrée des nombres pairs et à stocker les résultats dans une liste double. Cependant, vous remettez en question la validité de votre test et souhaitez clarifier les véritables implications en termes de performances.
Évaluation du test de référence
Vos résultats initiaux, qui indiquaient des flux être plus lent que les collectes, a soulevé des inquiétudes. Pour garantir une évaluation plus fiable, il est essentiel de corriger les erreurs potentielles et d'effectuer un test équitable. Voici quelques considérations :
Résultats d'analyse comparative appropriés
Suite à ces recommandations, revisitons les évaluation des performances à l'aide de JMH et de stratégies d'analyse comparative améliorées :
@OutputTimeUnit(TimeUnit.NANOSECONDS) @BenchmarkMode(Mode.AverageTime) @OperationsPerInvocation(StreamVsVanilla.N) public class StreamVsVanilla { public static final int N = 10000; static ListsourceList = new ArrayList(); static { for (int i = 0; i vanilla() { List result = new ArrayList(sourceList.size() / 2 1); for (Integer i : sourceList) { if (i % 2 == 0){ result.add(Math.sqrt(i)); } } return result; } @Benchmark public List stream() { return sourceList.stream() .filter(i -> i % 2 == 0) .map(Math::sqrt) .collect(Collectors.toCollection( () -> new ArrayList(sourceList.size() / 2 1))); } }
Résultats :
Benchmark Mode Samples Mean Mean error Units StreamVsVanilla.stream avgt 10 17.588 0.230 ns/op StreamVsVanilla.vanilla avgt 10 10.796 0.063 ns/op
Résultats
Contrairement aux premiers résultats, le benchmark JMH montre clairement que l'approche de collecte traditionnelle est nettement plus rapide que l'approche de collecte traditionnelle. approche de flux dans ce scénario particulier.
Conclusion
Sur la base de ces résultats d'analyse comparative améliorés, nous pouvons conclure que :
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3