Oder macht es nur den Code für etwas, für das sich das JIT automatisch sorgen würde?Hilft die @ inline-Annotation in Scala wirklich die Leistung?
Antwort
Ich habe noch einen Fall zu finden, wo es die Leistung verbessert, und ich habe an etlichen verschiedenen Stellen versucht. Die JVM scheint ziemlich gut darin zu sein, wenn es möglich ist, und selbst wenn du in Scala @inline anforderst, kann es das nicht immer tun (und manchmal habe ich bemerkt, dass es nicht einmal passiert, wenn ich es für nötig halte in der Lage sein).
Der Ort, wo man erwarten, dass ein Bytecode Unterschied zu sehen ist in etwa so:
object InlineExample {
final class C(val i: Int) {
@inline def t2 = i*2
@inline def t4 = t2*2
}
final class D(val i: Int) {
def t2 = i*2
def t4 = t2*2
}
}
, wenn sie mit -optimise
zusammengestellt. Und Sie sehen den Unterschied, aber es läuft im Allgemeinen nicht schneller, da der JIT-Compiler bemerken kann, dass die gleichen Optimierungen auf D
gelten.
Es kann also einen Versuch in den letzten Phasen der Optimierung wert sein, aber ich würde es nicht routinemäßig tun, ohne zu überprüfen, ob es einen Unterschied in der Leistung macht.
- 1. Verbessern in SQLite die vorbereiteten Anweisungen wirklich die Leistung?
- 2. Verbessert das Entfernen überqualifizierter Elemente wirklich die Leistung?
- 3. Leistung von typeclasses in Scala
- 4. Ist die Komplexität von scala.xml.RuleTransformer wirklich exponentiell?
- 5. Sind Futures in Scala wirklich funktional?
- 6. Wie unportierbar ist die Assemblersprache,/wirklich /?
- 7. Coursera progfun1: scala Vereinigung Leistung
- 8. Scala Leistung auf Primzahlen Algorithmus
- 9. Scala für das Verständnis Leistung
- 10. Wie misst man die Leistung dieses Codeelements?
- 11. Beeinflussen Variablen die Leistung?
- 12. Verbessern Sie die Leistung
- 13. Hilft Task.Factory.StartNew in ASP.Net MVC?
- 14. Ist die unordered_map wirklich ungeordnet?
- 15. Beeinflusst NUnit die Leistung?
- 16. Die Verbesserung Solr Leistung
- 17. Verbessert Caching immer die Leistung?
- 18. Java Deadlock verschlechtert die Leistung
- 19. Scala: Veränderliche vs unveränderbare Objekt Leistung - OutOfMemoryError
- 20. Beschleunigt ein Multithread-Crawler in Python wirklich die Dinge?
- 21. Beeinträchtigt die Größe eines Platzhalterbilds die Leistung?
- 22. Beeinflusst die .NET-Baugruppengröße die Leistung?
- 23. Verschlechtert die Serialisierung die Spark-Leistung?
- 24. Beeinträchtigt die Anzahl der Namespaces die Leistung?
- 25. Beeinträchtigt die string.replaceAll() - Leistung die String-Unveränderlichkeit?
- 26. Firebase - verbessert Caching die Leistung?
- 27. Scala Web Framework Leistung auf Himbeer pi
- 28. Scala Sammlung sortiert, sortWith und sortBy Leistung
- 29. Warum verbessert dies die Leistung?
- 30. "Aktiviert Runtime-Designs" die Leistung?
Vielen Dank für die Meldung Ihrer Testergebnisse; rettete mich und wahrscheinlich andere einige Zeit :) –
Sie Argument ist nur wahr, wenn es nur einen JIT-Compiler auf dem Planeten gab. - Aber das ist nicht wahr. Da gibt es Android, dort gibt es IBM, die eigene JVMs produziert. Alles, was der Scala-Compiler * sicher macht * ist also besser als etwas, was JIT * tun könnte. – Martin
@Martin - Ich gebe zu, dass Android nicht ausprobiert haben. Ich habe versucht, JRockit und die IBM JVM mit der gleichen Wirkung wie die Sun JVM (d. H. Keine). –