What I get:
Code:
$ g++ -o cpp.test test.cpp -O3
$ gcj -o java.test Main.java --main=Main
$ javac Main.java
$ ./cpp.test
...
i = 5402
i = 5403
n^3 took: 0.0599821seconds
$ java Main
k= 498
k= 499
n^3 took 43.118 seconds
(5404 would take too long - extrapolated, it would've been: 466.02 seconds/7m46s)
$ ./java.test
k= 497
k= 498
k= 499
n^3 took 79.429 seconds
(5404 would take too long - extrapolated, it would've been: 858.47 seconds/14m18s)
$ gcj -o java.test Main.java --main=Main -O3
k= 5401
k= 5402
k= 5403
n^3 took 0.117 seconds
So, the winner is C++, but by only a factor of 2. My software & hardware:
Code:
gcc version 4.3.2
java version "1.6.0_13"
Java(TM) SE Runtime Environment (build 1.6.0_13-b03)
Java HotSpot(TM) 64-Bit Server VM (build 11.3-b02, mixed mode)
model name : Intel(R) Core(TM)2 Duo CPU T7300 @ 2.00GHz
cache size : 4096 KB
cpu cores : 2
(I tweaked the timing code in the C++ version to use gettimeofday, for the subsecond timings.)