2010-10-19 10 views
5

Welche Strukturen von Scala können effizienter genutzt werden als in Java, um die Ausführungsgeschwindigkeit zu erhöhen? Ich weiß nicht, ob dies möglich ist, aber meine Zweifel zu klären :)Code-Optimierung mit Scala

Dank

Antwort

9

Die scala @specialized Anmerkung mehr Versionen einer Klasse erzeugen kann, fein abgestimmt mit spezifischem Urtyp. Sie können das alles in Java schreiben, aber wahrscheinlich nicht.

6

Ab Version 2.9 ist die Bibliothek für parallele Sammlungen Teil der Standardverteilung. Dies ermöglicht eine extrem einfache Verteilung von sogenannten "peinlich parallelen" Problemen über mehrere Kerne. Dies erfordert in Java erheblich mehr Aufwand.

In der Regel reichen die Scala-Benchmarks von mäßig langsamer als Java bis etwas schneller, je nach Problem und Codiertechniken.

+0

Parallele Sammlungen sind für 2.9 geplant. Siehe http://stackoverflow.com/questions/3900879/what-new-features-will-be-added-to-scala-2-9/ –

6

Um Ross Antwort zu erweitern, können Sie @specialized verwenden, um bestimmte Versionen einer Sammlung zu generieren. Zum Beispiel würden Sie in Java normalerweise fastutil oder Apache Primitives für Sammlungen von Primitiven verwenden. Scala @specialized werden diese Varianten für Sie generieren und verstecken sie automatisch wie folgt:

class MyLinkedList[@specialized T] (args: T*) { 
    // whatever it does 
} 

Other than that, Akteure erleichtern gleichzeitig ausgeführte Anwendungen zu schreiben. In 2.9 werden Parallel-Sammlungen angezeigt, die Funktionen höherer Ordnung parallel über Sammlungen hinweg anwenden können, was jeden Platz beschleunigt, an dem Sie das Scala-Äquivalent einer Java-Schleife (falte, foreach usw.) hätten. Siehe this ScalaDays talk für das Wesentliche auf diesem.

2

Ich unterlasse Spekulationen darüber, wie die resultierende Leistung von einem äquivalenten Java-Konstrukt abweichen könnte, aber Scala macht closure elimination, was einen messbaren Unterschied machen könnte, modulo HotSpot-Tricks.

Auch bleiben Sie dran für Iulian's thesis, die bald veröffentlicht werden sollte und wird viele weitere Informationen zum Thema Scala-Optimierung bieten.