有没有好的Clojure基准测试?

编辑:Clojure基准测试在基准测试游戏中

我已经制作了这个问题社区wiki,并邀请其他人保持更新。


有谁知道Clojure表现的基准吗?

我自己做了一些(虽然没有什么太正式的),与其他函数式语言相比,它不太公平(尝试了Haskell和OCaml)。但是与Java或JVM上的其他语言(例如Scala)相比,它看起来如何?它与其他Lisps相比如何?

计算机语言基准游戏论坛上有一些关于添加Clojure的讨论,但还没有做任何事情。

编辑:随着我发现更多,我将继续添加以下内容:

@igouy指出,clojure的基准脚本是由github上的jafingerhut创建的

来自Clojure讨论组的两个非常相关的主题:

另外,这些博客文章:

最后,关于堆栈溢出的一个相关问题:

这些讨论中的大多数使我认为,与在JVM上运行的其他语言相比,Clojure的性能非常有利,尽管毫无疑问,在比较语言时很难得出一个广泛的结论,因为它们的性能可能因任务而异。

编辑:

Lau Jensen刚刚在他的博客上发布了一个关于使用JVM语言进行基准测试的精彩讨论:“正确进行基准测试”。


答案 1

参见 jafingerhut / clojure-benchmarks

iirc当前的clojure实现并没有集中在性能上,但下一个版本应该会。


答案 2

这是一个重要的问题,几乎每个人都在考虑clojure之前都会考虑这个问题。即使对于没有添加诸如分块序列之类的东西的成熟语言来说,这也是一个困难的问题,这些东西从根本上改变了某些特定(尽管常见)任务的性能。我在这个线程中发现了一些很好的虽然。你找到的许多基准测试都与Java和clojure的先前版本有关,因此任何人都不太可能找到“非常好的基准测试”。

我在这里问你自己的一个很好的问题是Java是否足够快。这是足够快的先决条件。如果你能说服你自己,这个问题的答案是肯定的,那么在Clojure中继续并实现你的分析在Java中识别为瓶颈的部分是安全的。因为您有一个具有众所周知的性能的故障回复语言,所以使用Clojure通常是安全的。


推荐