Skip to content

tomaszkubacki/deltablue

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Update October 2014

After 2 years of hard work from the Dart team, Dart is now comfortably ahead of OpenJDK and V8.

Will also be interesting to test against the Oracle JVM.

Here are the raw results. (Thanks for running this Rob).

java version "1.7.0_65"
OpenJDK Runtime Environment (IcedTea 2.5.2) (7u65-2.5.2-3~14.04)
OpenJDK 64-Bit Server VM (build 24.65-b04, mixed mode)
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/4.8/lto-wrapper
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu 4.8.2-19ubuntu1' --with-bugurl=file:///usr/share/doc/gcc-4.8/README.Bugs --enable-languages=c,c++,java,go,d,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.8 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.8 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --disable-libmudflap --enable-plugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64/jre --enable-java-home --with-jvm-root-dir=/usr/lib/jvm/java-1.5.0-gcj-4.8-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-4.8-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) 
V8 version 3.30.8 [console: dumb]
d8> 
Dart VM version: 1.7.0-dev.4.5 (Thu Oct  9 06:28:13 2014) on "linux_x64"
DeltaBlue   Java        10x 6.4 ms
java DeltaBlue 10 secs 0.15, mem 28492, cpu 128%
DeltaBlue   Java        100x    1.61 ms
java DeltaBlue 100 secs 0.25, mem 43052, cpu 171%
DeltaBlue   Java        1000x   0.44 ms
java DeltaBlue 1000 secs 0.51, mem 68668, cpu 177%
DeltaBlue   Java        10000x  0.2619 ms
java DeltaBlue 10000 secs 2.70, mem 258788, cpu 114%
DeltaBlue   Java        100000x 0.24715 ms
java DeltaBlue 100000 secs 24.79, mem 259948, cpu 103%
DeltaBlue   C   gcc 10x 0.7ms
Command exited with non-zero status 26
./deltablue 10 gcc secs 0.00, mem 648, cpu 100%
DeltaBlue   C   gcc 100x    0.52ms
Command exited with non-zero status 28
./deltablue 100 gcc secs 0.05, mem 648, cpu 100%
DeltaBlue   C   gcc 1000x   0.494ms
Command exited with non-zero status 30
./deltablue 1000 gcc secs 0.49, mem 656, cpu 100%
DeltaBlue   C   gcc 10000x  0.4948ms
Command exited with non-zero status 32
./deltablue 10000 gcc secs 4.95, mem 656, cpu 99%
DeltaBlue   C   gcc 100000x 0.49121ms
Command exited with non-zero status 34
./deltablue 100000 gcc secs 49.13, mem 652, cpu 99%
DeltaBlue   C   gcc -O3 10x 0.2ms
Command exited with non-zero status 30
./deltablue-o3 10 gcc -O3 secs 0.00, mem 656, cpu 100%
DeltaBlue   C   gcc -O3 100x    0.26ms
Command exited with non-zero status 32
./deltablue-o3 100 gcc -O3 secs 0.02, mem 652, cpu 100%
DeltaBlue   C   gcc -O3 1000x   0.229ms
Command exited with non-zero status 34
./deltablue-o3 1000 gcc -O3 secs 0.22, mem 660, cpu 100%
DeltaBlue   C   gcc -O3 10000x  0.2273ms
Command exited with non-zero status 36
./deltablue-o3 10000 gcc -O3 secs 2.27, mem 656, cpu 99%
DeltaBlue   C   gcc -O3 100000x 0.23264ms
Command exited with non-zero status 38
./deltablue-o3 100000 gcc -O3 secs 23.27, mem 660, cpu 99%
DeltaBlue   d8      10x 3.7ms
./d8 deltablue.js -- 10 secs 0.05, mem 16104, cpu 158%
DeltaBlue   d8      100x    0.7ms
./d8 deltablue.js -- 100 secs 0.08, mem 17212, cpu 157%
DeltaBlue   d8      1000x   0.254ms
./d8 deltablue.js -- 1000 secs 0.26, mem 19904, cpu 121%
DeltaBlue   d8      10000x  0.1949ms
./d8 deltablue.js -- 10000 secs 1.96, mem 28036, cpu 102%
DeltaBlue   d8      100000x 0.19622ms
./d8 deltablue.js -- 100000 secs 19.63, mem 45864, cpu 100%
DeltaBlue   Dart        10x 4.7ms
dart DeltaBlue.dart 10 secs 0.10, mem 14904, cpu 100%
DeltaBlue   Dart        100x    0.72ms
dart DeltaBlue.dart 100 secs 0.13, mem 16228, cpu 100%
DeltaBlue   Dart        1000x   0.199ms
dart DeltaBlue.dart 1000 secs 0.26, mem 18308, cpu 101%
DeltaBlue   Dart        10000x  0.1439ms
dart DeltaBlue.dart 10000 secs 1.50, mem 16232, cpu 100%
DeltaBlue   Dart        100000x 0.13733ms
dart DeltaBlue.dart 100000 secs 13.79, mem 17820, cpu 100%



Update - DartVM now beats JVM v1.8 see Nickolay's blog for details.
http://bonovox.be/blog/?p=128

Original (Buggy) benchmark.
http://labs.oracle.com/people/mario/java_benchmarking/index.html

Updated faster java benchmark.
https://community.cablelabs.com/svn/OCAPRI/tags/RI-I1_1_1-REL-A/ri/ODLSrc/OCAP-1.0/jvm/Sun/src/share/javavm/test/COM/sun/labs/kanban/DeltaBlue/DeltaBlue.java

C Benchmark (And the original slow Java version, plus a few others)
http://www.cl.cam.ac.uk/~mr10/Bench.html

Dart benchmark
https://github.com/dart-lang/benchmark_harness


Results, allowing enough iterations for the VM's to warm up.
gcc -O3   1x
JVM       1.2x
DartVM    1.3x
V8        1.6x
gcc       2.5x


Comments on other aspects of the benchmark:

The DartVM uses more memory than V8, and less than the JVM. Dart and V8 start
up faster than the JVM (Not much of a surprise there). However interestingly,
V8 appears to startup measurably faster than the DartVM. When testing a single
iteration, V8 consistently takes ~10ms to start the benchmark, and ~20ms to
execute it, versus Dart, which takes ~30ms to start, and also ~20 to execute.

Using a script snapshot had no measurable impact on start up time. This
probably reflects the small size of the benchmark, which doesn't use much, if
any (excluding List) of the standard library code.

At a wild guess, I'd say the start up time difference is due to Dart having a
larger standard library, thus a larger initial snapshot, which takes a little
longer to copy into memory. For usage in browsers, this 20ms headstart is
likely irrelevant as the VM can be already be started before the first code is
received.

It would be nice to see some start up benchmarks using larger applications, so
that improved start up time vs V8, can be evaluated. Perhaps using a large Dart
application, built with dart2js, running on V8, and comparing against the start
up time on the Dart VM is the way to go?



java version "1.6.0_26"
gcc version 4.6.3 (Ubuntu/Linaro 4.6.3-1ubuntu5) 
V8 version 3.17.15.1
Dart VM version: 0.4.2.8_r20259 (Tue Mar 19 23:33:54 2013)

DeltaBlue	Java		10x	9.3 ms
DeltaBlue	Java		100x	2.96 ms
DeltaBlue	Java		1000x	0.898 ms
DeltaBlue	Java		10000x	0.5229 ms
DeltaBlue	Java		100000x	0.48908 ms

DeltaBlue	C	gcc	10x	0ms
DeltaBlue	C	gcc	100x	1ms
DeltaBlue	C	gcc	1000x	0.98ms
DeltaBlue	C	gcc	10000x	0.993ms
DeltaBlue	C	gcc	100000x	0.9927ms

DeltaBlue	C	gcc -O3	10x	0ms
DeltaBlue	C	gcc -O3	100x	0.4ms
DeltaBlue	C	gcc -O3	1000x	0.39ms
DeltaBlue	C	gcc -O3	10000x	0.416ms
DeltaBlue	C	gcc -O3	100000x	0.3936ms

DeltaBlue	d8		10x	4.1ms
DeltaBlue	d8		100x	1.16ms
DeltaBlue	d8		1000x	0.729ms
DeltaBlue	d8		10000x	0.6636ms
DeltaBlue	d8		100000x	0.65464ms

DeltaBlue	Dart		10x	5.9ms
DeltaBlue	Dart		100x	1.24ms
DeltaBlue	Dart		1000x	0.636ms
DeltaBlue	Dart		10000x	0.536ms
DeltaBlue	Dart		100000x	0.55263ms

Releases

No releases published

Packages

No packages published