我不确定这是属于StackOverflow还是属于Clojure Google小组.但该小组似乎正在忙着讨论Clojure 1.2的数字改进,所以我会在这里尝试:
http://shootout.alioth.debian.org/为各种语言提供了许多性能基准.
我注意到Clojure丢失了,所以我制作了一个关于n体问题的Clojure版本.
我可以在这里找到我能够生成的最快的代码,并且对它进行基准测试似乎是说数字运算Clojure是
因果〜比Python/Ruby/Perl快10倍
因子比C/Java/Scala/Ada慢4倍
与OCaml,Erlang和Go大致相同
我对这种性能表现非常满意.
我对Clojure大师的问题是
无论是在速度方面还是在代码简洁性或可读性方面(不牺牲速度),我是否都有明显的改进?
您是否认为这一方面代表了Clojure性能与Python/Ruby/Perl和另一方面Java/C?
更新
对于枪战更多的Clojure 1.1基准程序在这里,其中包括正体问题.
这里没有大量的回复:)但显然有些兴趣,所以我会尝试用我过去几天学到的东西来回答我自己的问题:
使用1.1优化方法(Java原语和可变数组)比优化Java慢4倍,速度和它一样快.
1.2构建definterface
和deftype
是快两倍多,内〜1.7倍来的Java(+ 70%)比为1.1短,更简单和更干净的代码.
以下是实施:
Clojure 1.1方法
Clojure 1.2方法
更多细节,包括"经验教训",JVM版本和剖析截图.
从主观上讲,与优化1.1相比,优化1.2代码是轻而易举的,因此对于Clojure数字运算来说这是一个非常好的消息.(其实接近惊人的:)
1.2测试使用了当前的主分支,我没有尝试任何新的数字分支.从我可以收集目前正在讨论的新想法
可以使非优化数值更快
可能会加速这个基准测试的1.1版本
可能不会加速1.2版本,它已经像它可能获得的那样"接近金属".
免责声明:
Clojure 1.2尚未发布,因此1.2基准测试结果是初步的.
这是物理计算的一个特定基准.它与浮点数运算相关,但与字符串解析,并发或Web请求处理等领域的性能无关.