33 votes

Existe-t-il de bons repères Clojure?

Edit: Le Clojure repères sur les Repères de Jeu.

J'ai fait de cette question wiki de la communauté et inviter d'autres personnes à le maintenir à jour.


Quelqu'un est-il au courant de repères de Clojure de la performance?

J'ai fait un peu de ma propre (bien que rien de trop formelle) et ce n'est pas juste trop bien par rapport à d'autres langages fonctionnels (essayé Haskell et OCaml). Mais comment est-il par rapport à Java ou un autre langage sur la JVM (par exemple Scala)? Et comment se comparent à d'autres Lisps?

Il y a eu quelques discussions sur l' Ordinateur Language Benchmarks Jeu forum sur l'ajout de Clojure sur il y, mais rien n'a encore été fait.

Edit: je vais continuer à ajouter à ce que je trouve plus:

@igouy a souligné que l'indice de référence des scripts pour clojure sont créés par jafingerhut sur github.

Deux très pertinentes fils de l'Clojure groupe de discussion:

Et séparément, ces billets de blog:

Et enfin, une question sur stackoverflow:

La plupart de ces discussions me conduisent à penser que Clojure est la performance est très favorable par rapport à d'autres langues en cours d'exécution sur la JVM, bien qu'il n'y a pas de doute qu'il peut être très difficile de tirer une conclusion globale lors de la comparaison des langues, parce que leurs performances peuvent varier considérablement dépendante de la tâche.

Edit:

Lau Jensen vient de poster une grande discussion à propos de la comparaison avec la JVM de langues sur son blog: "Obtenir de l'analyse comparative de droit".

11voto

igouy Points 1662

Voir jafingerhut / clojure-benchmarks

L'implémentation actuelle de clojure n'a pas été centrée sur les performances, mais la prochaine version le fera soi-disant.

8voto

Arthur Ulfeldt Points 45059

C'est une question importante, presque tout le monde pense avant d'envisager clojure. C'est aussi une question difficile, même pour les langues qui ne sont pas ajouter des choses, comme des fragments de séquences, que de changer radicalement les performances de certains (bien commun) des tâches. J'ai trouvé quelques bonnes thoughs dans ce fil. Plusieurs des indices de référence, vous trouverez seront liées aux précédentes versions de java et clojure de sorte que son peu probable que n'importe qui peut trouver "vraiment bons repères".

J'ai une grande question à poser à votre auto ici est de Java Est assez rapide. C'est une condition préalable à clojure être assez rapide. Si vous pouvez convaincre votre auto que la réponse à cette question est oui, alors il est sécuritaire de procéder en Clojure et mettre en œuvre les parties de votre profilage identifie les goulots des bouteilles en Java. Parce que vous avez une restauration automatique de la langue avec la bien connue de la performance, de façon générale, être sûr d'aller avec Clojure.

8voto

Lau Jensen Points 184

Pour des questions de performances veuillez vous reporter à cet article sur le blog:

http://meshy.org/2009/12/13/widefinder-2-with-clojure.html

Cela montre une Clojure mise en œuvre de la WideFinder2 défi qui est plus rapide que Java, Scala et mono-thread C. Comparer avec les temps officiels.

Concernant Daniels remarque que Clojure ne sera jamais plus vite, nous voyons que sa manifestement incorrectes sur la base des résultats ci-dessus. La mutabilité est plus rapide que l'immutabilité qui est Clojures par défaut, mais Clojure permet de locaux transitoires (ie. temporairement mutable données), de sorte que l'on peut atteindre une vitesse optimale.

Reportez-vous à clj-me.cgrand.net pour de nombreuses techniques d'optimisation.

En conclusion: Clojure peut être aussi vite que vous le voudriez être tout en vous permettant de maintenir un simple, élégant et robuste codebase, presque une combinaison unique.

2voto

ewernli Points 23180

Vous pourriez également être intéressé par la série concur.next de Tim Bray. Il discute de certains problèmes de performance.

1voto

Daniel C. Sobral Points 159554

Clojure ne sera jamais en mesure de correspondre à un Scala programme qui tire pleinement parti de la mutabilité dans un algorithme qui est bénéficié par elle. Il y a aussi le fait que Clojure est un langage dynamique, qui, actuellement, n'est pas très bien pris en charge par la JVM.

D'autre part, Clojure excelle dans l'activation parallèle, asynchrones et des algorithmes distribués, et immuable algorithmes de manière générale.

Donc, si vous voulez (pour la plupart) immutabilité et multicœur efficacité, Clojure fera de ces beaucoup plus facile à réaliser. Si votre algorithmes vraiment, vraiment besoin d'fortement l'utilisation de la mutabilité de l'efficacité, de la Scala en fera la plus facile.

Quelque chose entre les deux, il ne sera probablement pas d'importance de toute façon.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X