Why Java (server VM) is faster than D?
aki via Digitalmars-d
digitalmars-d at puremagic.com
Mon Aug 3 09:27:37 PDT 2015
When I was trying to port some Java program to D,
I noticed Java is faster than D.
I made a simple bench mark test as follows.
Then, I was shocked with the result.
test results on Win8 64bit (smaller is better)
Java(1.8.0,64bit,server): 0.677
C++(MS vs2013): 2.141
C#(MS vs2013): 2.220
D(DMD 2.067.1): 2.448
D(GDC 4.9.2/2.066): 2.481
Java(1.8.0,32bit,client): 3.060
Does anyone know the magic of Java?
Thanks, Aki.
---
test program for D lang:
import std.datetime;
import std.stdio;
class Foo {
int i = 0;
void bar() {}
};
class SubFoo : Foo {
override void bar() {
i = i * 3 + 1;
}
};
int test(Foo obj, int repeat) {
for (int r = 0; r<repeat; ++r) {
obj.bar();
}
return obj.i;
}
void main() {
auto stime = Clock.currTime();
int repeat = 1000 * 1000 * 1000;
int ret = test(new SubFoo(), repeat);
double time = (Clock.currTime() - stime).total!"msecs" / 1000.0;
writefln("time=%5.3f, ret=%d", time, ret);
}
test program for Java:
class Foo {
public int i = 0;
public void bar() {}
};
class SubFoo extends Foo {
public void bar() {
i = i * 3 + 1;
}
};
public class Main {
public static int test(Foo obj, int repeat) {
for (int r = 0; r<repeat; ++r) {
obj.bar();
}
return obj.i;
}
public static void main(String[] args) {
long stime = System.currentTimeMillis();
int repeat = 1000 * 1000 * 1000;
int ret = test(new SubFoo(), repeat);
double time = (System.currentTimeMillis() - stime) / 1000.0;
System.out.printf("time=%5.3f, ret=%d", time, ret);
}
}
More information about the Digitalmars-d
mailing list