有没有好的Clojure基准测试?

Sha*_*ane 33 java performance functional-programming scala clojure

编辑: Clojure基准测试在基准测试游戏中有所提升.

我已经在社区维基上提出了这个问题并邀请其他人更新.


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

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

关于在那里添加Clojure 的计算机语言基准游戏论坛上有一些讨论,但还没有完成任何工作.

编辑:我将继续添加到此,因为我发现更多:

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

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

另外,这些博文:

最后,有关stackoverflow的相关问题:

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

编辑:

Lau Jensen刚刚在他的博客上发表了一篇关于使用JVM语言进行基准测试的讨论:"正确地进行基准测试".

igo*_*ouy 11

jafingerhut/clojure-benchmarkmarks

iirc当前的clojure实现并未专注于性能,但下一个版本应该会.


Art*_*ldt 8

这是一个重要的问题,几乎每个人在考虑clojure之前都会考虑这个问题.即使对于没有添加内容的成熟语言(如分块序列),它也是一个难题,它会从根本上改变某些特定(虽然常见)任务的性能.我在这个帖子中找到了一些好的东西.你发现的许多基准测试都与java和clojure的早期版本有关,所以任何人都不可能找到"非常好的基准测试".

我很高兴在这里问你自己是Java足够快.这是克制足够快的前提条件.如果你可以让自己相信这个问题的答案是肯定的,那么可以安全地继续进行Clojure并实现你的分析在Java中识别为瓶颈的部分.因为你有一个具有众所周知的性能的故障恢复语言.使用Clojure通常是安全的.


小智 8

有关性能问题,请参阅此博文:

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

这显示了WideFinder2挑战的Clojure实现,它比Java,Scala和单线程C更快.与官方时间相比.

关于丹尼尔斯说Clojure永远不会更快,我们看到它基于上面的结果显然是不正确的.可变性比Clojures默认的不可变性更快,但Clojure允许局部瞬态(即暂时可变的数据),因此可以实现最佳速度.

有关许多优化技术,请参阅clj-me.cgrand.net.

总结:Clojure可以像您希望的那样快,同时仍然允许您保持简单优雅和强大的代码库,几乎是一个独特的组合.

  • 这是一个有趣的读物!我不确定"Clojure可以像你希望的那样快"的结论是从那个基准中得出的.作者对Clojure代码进行了大量优化,并承认相同的技巧适用于Java和Scala(例如,很多都是为了避免使用Java的String.split!).它更多地反映了重复优化的优点.它确实表明,使用Clojure完成各种任务可以非常舒服. (4认同)