首页 文章

有没有好的Clojure基准测试?

提问于
浏览
34

编辑: The Clojure benchmarks are up on the Benchmarks Game .

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


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

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

Computer Language Benchmarks Game论坛上有一些discussion关于在那里添加Clojure,但还没有做任何事情 .

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

@igouy在github上指出jjingeringer的clojure are being created的基准脚本 .

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

另外,这些博文:

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

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

编辑:

Lau Jensen在他的博客上发表了关于使用JVM语言进行基准测试的很好的讨论:"Getting benchmarking right" .

5 回答

  • 2

    jafingerhut / clojure-benchmarks

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

  • 8

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

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

  • 1

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

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

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

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

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

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

  • 11

    你可能也对Tim Bray的concur.next系列感兴趣 . 他讨论了一些性能问题 .

  • 8

    Clojure永远无法匹配Scala程序,该程序在受益于它的算法中充分利用可变性 . 还有一个事实是Clojure是一种动态语言,目前JVM并不能很好地支持它 .

    另一方面,Clojure擅长于实现并行,异步和分布式算法,以及一般而言不可变算法 .

    因此,如果您希望(主要)不变性和多核效率,Clojure将使这些更容易实现 . 如果您的算法确实需要大量使用可变性来提高效率,那么Scala将使这些变得更容易 .

    介于两者之间的任何事情都可能无关紧要 .

相关问题