我是D语言的新手,正在进行与Java的简单测试并期望看到本地语言会更快(或大致相同)。但在我的第一个递归测试中,D比Java慢得惊人(近乎两倍)。
以下是Java代码(这只是一个简单的性能测试):
public static void main(String... args) {
long before = System.nanoTime();
System.out.println(fibonacci(40));
System.out.println(TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - before));
}
static int fibonacci(int n) {
if (n < 2) {
return n;
}
return fibonacci(n - 2) + fibonacci(n - 1);
}
环境:Win7 64位,JDK版本:1.7.0_10 x64。
D:
import std.stdio;
import std.datetime;
void main(string[] args)
{
auto r = benchmark!(simplebench)(1);
writefln("%s", r[0].to!("msecs", int));
}
void simplebench() {
writeln(fibonacci(40));
}
int fibonacci(int n) {
if (n < 2) {
return n;
}
return fibonacci(n - 2) + fibonacci(n - 1);
}
环境:Win7 64位,dmd 2.061编译器,编译选项为:-noboundscheck -inline -O -release
Java的运行时间约为570毫秒,而D语言则为1011毫秒。
我做错了什么?谢谢!