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); } }