Quelles structures de Scala peuvent être utilisées plus efficacement qu'en Java, pour augmenter la vitesse d'exécution? Je ne sais pas si cela est possible, mais pour effacer mes doutes :)Optimisation de code avec Scala
Merci
Quelles structures de Scala peuvent être utilisées plus efficacement qu'en Java, pour augmenter la vitesse d'exécution? Je ne sais pas si cela est possible, mais pour effacer mes doutes :)Optimisation de code avec Scala
Merci
Le scala @specialized annotation peut générer plusieurs versions d'une classe, peaufinés avec des types primitifs spécifiques. Vous pouvez écrire tout cela en Java, mais vous ne voulez probablement pas le faire.
À partir de la version 2.9, la bibliothèque de collections parallèles doit faire partie de la distribution standard. Cela permettra une distribution extrêmement simple des problèmes dits "embarrassingly parallèles" sur plusieurs cœurs. Faire cela en Java demande beaucoup plus d'efforts.
En règle générale, les benchmarks Scala vont de modérément plus lent que Java à légèrement plus rapide, selon le problème et les techniques de codage.
Pour développer la réponse de Ross, vous pouvez utiliser @specialized pour générer des versions spécifiques d'une collection. Par exemple, en Java, vous utiliseriez généralement fastutil ou Apache Primitives pour les collections de primitives. Le @specialized Scala va générer ces variantes pour vous et les cacher automatiquement comme ceci:
class MyLinkedList[@specialized T] (args: T*) {
// whatever it does
}
Autre que cela, les acteurs facilitent l'écriture d'applications concurrentes. 2.9 sont des collections parallèles, qui peuvent appliquer des fonctions d'ordre supérieur en parallèle à travers les collections, accélérant n'importe quel endroit où vous auriez l'équivalent Scala d'une boucle Java (fold, foreach, etc). Voir this ScalaDays talk pour le Nitty-Gritty à ce sujet.
Je m'abstiendrai de spéculer sur la façon dont la performance résultante pourrait différer d'une construction Java équivalente, mais Scala fait closure elimination, ce qui pourrait faire une différence mesurable, astuces modulo HotSpot.
Restez également à l'écoute pour Iulian's thesis qui devrait être bientôt disponible et fournira beaucoup plus d'informations sur le sujet de l'optimisation Scala.
Des collectes parallèles sont prévues pour 2.9. Voir http://stackoverflow.com/questions/3900879/what-new-features-will-be-added-to-scala-2-9/ –