Gibt es irgendwelche guten Clojure benchmarks?
Edit: Die Clojure-benchmarks sind bis auf die Benchmarks Game.
Habe ich aus diesem Frage-community-wiki und andere dazu einladen, es zu halten aktualisiert.
Ist jemand bekannt, der benchmarks von Clojure die Leistung?
Ich getan haben, einige meiner eigenen (wenn auch nicht zu formal), und es hat nicht fair zu gut im Vergleich zu anderen funktionalen Sprachen (versucht, Haskell und OCaml). Aber wie sieht es im Vergleich zu Java oder einer anderen Sprache auf der JVM (z.B. Scala)? Und wie ist er im Vergleich zu anderen Lisps?
Gab es einige Diskussion auf die Computer Language Benchmarks Game forum über das hinzufügen von Clojure dort, aber es wurde nichts getan, noch nicht.
Edit: ich werde weiterhin zu diesem wie ich finde mehr:
@igouy wies darauf hin, dass die benchmark-Scripte für clojure erstellt werden von jafingerhut auf github.
Zwei sehr relevanten threads aus der Clojure Diskussion Gruppe:
- Clojure performance-tests und clojure ein wenig langsamer als Java
- Clojure Geschwindigkeit
- Fibonacci-Funktion performance-vergleichen zwischen clojure und scala
Getrennt und, diese blog-posts:
- Basic Clojure, Java-und JVM-Sprache-performance
- Scala Vs. Clojure — Let ' s get down to business und Scala vs. Clojure — Runde 2: Parallelität!
- Python vs Clojure — Evolving und Python vs Clojure — Reloaded
- Clojure vs. Ruby
- Clojure Diskussion - Wenn Es Um Performance Geht
- Clojure vs Ruby & Scala — Transient-Newsgroups
Und zu guter Letzt, eine Frage auf stackoverflow:
Meisten dieser Diskussionen führen mich zu glauben, dass Clojure die Leistung ist sehr günstig im Vergleich zu anderen Sprachen, läuft auf der JVM, obwohl es keinen Zweifel gibt, dass es sehr schwierig sein kann, zu kommen, um ein breites Schlussfolgerung beim Vergleich von Sprachen, weil Ihre Leistung kann erheblich variieren abhängig von der Aufgabe.
Edit:
Lau Jensen postete gerade eine große Diskussion über benchmarking mit JVM-Sprachen auf seinem blog: "Erste benchmarking-rechts".
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen jafingerhut /clojure-benchmarks
iirc die aktuelle clojure-Implementierung wurde nicht auf performance fokussierter, aber die nächste version wird vermutlich.
InformationsquelleAutor der Antwort igouy
Dies ist eine wichtige Frage, die nur etwa jeder denkt, bevor man clojure. Es ist auch eine schwierige Frage, auch für die Reife und Sprachen, die nicht das hinzufügen von Dingen wie chunked-Sequenzen, die sich radikal ändern Sie die Leistung von einigen spezifischen (obwohl üblich) Aufgaben. Ich fand einige gute thoughs in dieser thread. Viele der benchmarks finden Sie mit früheren Versionen von java und clojure so seine unwahrscheinlich, dass jemand finden kann, die "wirklich gute "benchmarks".
Ich toll, Frage dein selbst, hier ist Ist Java schnell genug. Dies ist eine Voraussetzung, um clojure schnell genug. Wenn Sie überzeugen sich selbst, dass die Antwort auf diese Frage ja ist, dann es sicher ist zu gehen in Clojure und implementieren Sie die Teile, die Ihre profiling identifiziert, die als Flaschenhälse in Java. Da haben Sie ein failback-Sprache mit bekannter Leistung wird in der Regel sicher zu gehen, mit Clojure.
InformationsquelleAutor der Antwort Arthur Ulfeldt
Für performance-Fragen finden Sie in diesem blogpost:
http://meshy.org/2009/12/13/widefinder-2-with-clojure.html
Dies zeigt eine Clojure Implementierung der WideFinder2 Herausforderung, die schneller ist als Java -, Scala-und single-threaded C. Vergleichen Sie mit dem offiziellen Zeiten.
Bezug auf Daniels Bemerkung, dass Clojure wird nie schneller sein, sehen wir, dass die offensichtlich falsche basierend auf den oben genannten Ergebnissen. Wandlungsfähigkeit ist schneller als die Unveränderlichkeit, die Clojures Standard, doch Clojure erlaubt lokale Transienten (ie. vorübergehend veränderliche Daten), so dass eine optimale Geschwindigkeit.
Finden clj-me.cgrand.net für viele Techniken der Optimierung.
Fazit: Clojure kann man so schnell, wie Sie möchten, es zu sein, während immer noch so dass Sie pflegen eine einfache, elegante und stabile Codebasis, fast einzigartige Kombination.
InformationsquelleAutor der Antwort Lau Jensen
Sie könnten auch interessiert sein in der Stimmen sind.weiter serie von Tim Bray. Er beschreibt einige performance-Probleme.
InformationsquelleAutor der Antwort ewernli
Clojure wird nie in der Lage, mit ein Scala-Programm, der nutzt die Vorteile von Wandlungsfähigkeit bei einem Algorithmus, der profitierte, indem es. Es gibt auch die Tatsache, dass Clojure ist eine dynamische Sprache, die, derzeit, ist nicht sehr gut unterstützt durch die JVM.
Auf der anderen Seite, Clojure zeichnet sich bei aktivieren der parallelen, asynchronen und verteilten algorithmen, und die unveränderlichen algorithmen im Allgemeinen.
So, wenn Sie wollen (meistens) Unveränderlichkeit und Mehrkern-Effizienz, Clojure machen diese viel einfacher zu erreichen. Wenn Ihre algorithmen wirklich, wirklich brauchen, um stark zu verwenden, Veränderlichkeit für Effizienz, dann Scala wird diese leichter.
Irgendetwas dazwischen, es wird wahrscheinlich egal, so oder so.
InformationsquelleAutor der Antwort Daniel C. Sobral