gpt4 book ai didi

java - D lang 简单基准测试

转载 作者:搜寻专家 更新时间:2023-11-01 04:00:00 25 4
gpt4 key购买 nike

我是 D 的新手,我正在通过简单测试将它与 Java 进行比较,并希望看到本地语言会更快(或大致相同)。但在我第一次使用递归 D 进行的测试中,它比 Java 慢得惊人(几乎两倍)。

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 64bit,dmd 2.061,编译选项:-noboundscheck -inline -O -release

Java ~570 毫秒和 D ~1011 毫秒。

我做错了什么?谢谢!

最佳答案

Java 通过其 JIT 编译器也是原生的。如果您使用 -Xint(强制解释器)禁用 JIT,那么您会发现 D 明显更快。值得一提的是,我在 C 中尝试了类似的实现,并获得了与 D 中相同的速度。

这些微观基准测试对于测试一般性能没有用。您在这里所做的只是测试 Java JIT 编译代码与 D 编译代码。它们都在编译中。此外,这不是典型的 Java 代码。典型的 Java 程序会在堆上分配大量内存,而典型的 D 程序则不会。

如果您想了解 D 与 Java 的真实性能,那么您需要在真实程序上对其进行测试。

关于java - D lang 简单基准测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14298699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com