Apple JDK’s / OpenJDK’s – Core2Duo vs Core i7
Last Updated on Lundi, 18 avril 2011 07:57 Written by Henri Gomez Lundi, 18 avril 2011 07:39
Previously I did benchmark of Apple VMs and OpenJDK 6 and I wanted to see how all of the JVMs available today on our Mac on two systems, an old Core2Duo and a newer Core i7. And also see how they perform 32 / 64 bits kernel mode.
So I redo full dacapo bench suite to include OpenJDK 6, and we have now 5 VMs (3 Java 6 and 2 Java 7) :
- Apple Java 1.6.0_22 – Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03-314, mixed mode)
- Apple Java 1.6.0_24 – Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-348, mixed mode)
- OpenJDK 7 bsd-port – OpenJDK 64-Bit Server VM (build 21.0-b07, mixed mode)
- OpenJDK 7 macosx-port – OpenJDK 64-Bit Server VM (build 21.0-b07, mixed mode)
- OpenJDK 6 macports – OpenJDK 64-Bit Server VM (build 17.0-b16, mixed mode)
Results on MacBook Pro – Core2Duo 2.66Ghz – 32bits kernel
| Bench | Apple JDK6 b22 | Apple JDK6 b24 | OpenJDK 1.7 bsd-port | OpenJDK 1.7 macosx-port | OpenJDK 1.6 |
|---|---|---|---|---|---|
| avrora (10 iterations) | 5436 | 5246 | 4917 | 5059 | 5061 |
| eclipse (2 iterations) | 49442 | 49529 | 37131 | 43572 | 37292 |
| fop (10 iterations) | 561 | 519 | 395 | 398 | 456 |
| h2 (2 iterations) | 7204 | 6635 | 6312 | 6341 | 11051 |
| jython (2 iterations) | 6517 | 5928 | 5947 | ||
| luindex (10 iterations) | 1095 | 2170 | 1014 | 985 | 953 |
| lusearch (10 iterations) | 7764 | 4379 | 5077 | 7611 | 5534 |
| pmd (10 iterations) | 3178 | 3295 | 2475 | 3438 | 2437 |
| sunflow (10 iterations) | 6969 | 7038 | 6543 | 6566 | 6564 |
| tomcat (5 iterations) | 4024 | 3924 | 3571 | 3820 | |
| tradebeans (5 iterations) | 8028 | 7516 | 5851 | 5914 | 5954 |
| tradesoap (5 iterations) | 16839 | 14603 | 12477 | 13096 | 12943 |
| xalan (10 iterations) | 3128 | 2744 | 2917 | 3783 | 2816 |
Results on iMac – Core i7 2.8Ghz – 64bits kernel
| Bench | Apple JDK6 b22 | Apple JDK6 b24 | OpenJDK 1.7 bsd-port | OpenJDK 1.7 macosx-port | OpenJDK 1.6 |
|---|---|---|---|---|---|
| avrora (10 iterations) | 3452 | 3349 | 3505 | 3600 | 3269 |
| eclipse (2 iterations) | 26081 | 24506 | 20664 | 22676 | 23706 |
| fop (10 iterations) | 392 | 354 | 299 | 303 | 324 |
| h2 (2 iterations) | 5559 | 5341 | 4814 | 4752 | 8766 |
| jython (2 iterations) | 4204 | 4168 | 4094 | ||
| luindex (10 iterations) | 2076 | 763 | 620 | 2226 | 643 |
| lusearch (10 iterations) | 1484 | 2101 | 2998 | 3055 | 1168 |
| pmd (10 iterations) | 2055 | 1884 | 1614 | 1876 | 1635 |
| sunflow (10 iterations) | 2808 | 2689 | 2315 | 2267 | 2276 |
| tomcat (5 iterations) | 1935 | 1850 | 1772 | 1751 | |
| tradebeans (5 iterations) | 6633 | 6127 | 5135 | 5092 | 5242 |
| tradesoap (5 iterations) | 19250 | 18265 | 19443 | 20217 | 22195 |
| xalan (10 iterations) | 1067 | 1673 | 762 | 791 | 775 |
Conclusion
As seen if previous article, latest Apple JVM, 1.6.0-24 perform better than the old 1.6.0-22, and still behind OpenJDK 7 and even OpenJDK 6. OpenJDK 7 bsd-port is still faster (by a small factor) than OpenJDK 7 from macosx-port (built with LLVM), in both simple threaded (Core2Duo, 2 cores) and large threaded (i7 4 cores with hyperthreading).
This benchmark show how good is Intel Core i7 comparing to previous generation Intel Core2Duo, roughly twice as fast.
Learn MoreApple JDK’s / OpenJDK – back to benchs
Last Updated on Dimanche, 17 avril 2011 05:59 Written by Henri Gomez Samedi, 16 avril 2011 02:52
It’s good to see works in progress for Aqua/Cocoa – AWT ports but what about JVM performances ?
Test vms
I selected 4 VMs to be tested
Apple Java 1.6.0_22 - java version "1.6.0_22"
Java(TM) SE Runtime Environment (build 1.6.0_22-b04-314-10M3406a)
Java HotSpot(TM) 64-Bit Server VM (build 17.1-b03-314, mixed mode)
Apple Java 1.6.0_24 - java version "1.6.0_24"
Java(TM) SE Runtime Environment (build 1.6.0_24-b07-348-10M3406a)
Java HotSpot(TM) 64-Bit Server VM (build 19.1-b02-348, mixed mode)
OpenJDK 7 bsd-port - openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-henri_2011_04_11_08_24-b00)
OpenJDK 64-Bit Server VM (build 21.0-b07, mixed mode)
OpenJDK 7 macosx-port - openjdk version "1.7.0-internal"
OpenJDK Runtime Environment (build 1.7.0-internal-b00)
OpenJDK 64-Bit Server VM (build 21.0-b07, mixed mode)
Test system
My test system is an Apple iMac (iMac11,1 ) with Intel i7 2.80Ghz and 8Gb DDR3 1067Mhz, running under SnowLeopard 10.6.7 64bits.
I wanted to test 64bits VMs on a 64bits machine and this time use a stronger processor with more threads (ie: 4 cores with hyperthreading).
DaCapo Benchmarks
I keep the DaCapo 9.12-bach.
Bench tests launched with -n X, ie (java -jar dacapo-9.12-bach.jar -n 10 pmd)
| Bench | Apple JDK6 b22 | Apple JDK6 b24 | OpenJDK 1.7 bsd-port | OpenJDK 1.7 macosx-port |
|---|---|---|---|---|
| avrora (10 iterations) | 3464ms | 3406ms | 3281ms | 3410ms |
| eclipse (2 iterations) | 25635ms | 23264ms | 22156ms | 23503ms |
| fop (10 iterations) | 379ms | 351ms | 301ms | 305ms |
| h2 (2 iterations) | 5662ms | 5308ms | 4557ms | 4694ms |
| jython (2 iterations) | 4287ms | 4188ms | Failure (Trace/BPT trap) | 4004ms |
| luindex (10 iterations) | 2402ms | 763ms | 623ms | 670ms |
| lusearch (10 iterations) | 1500ms | 2173ms | 1190ms | 4019ms |
| pmd (10 iterations) | 2054ms | 1860ms | 1582ms | 1891ms |
| sunflow (10 iterations) | 2763ms | 2658ms | 2342ms | 2292ms |
| tomcat (5 iterations) | 1943ms | 1884ms | 1653ms | 1778ms |
| tradebeans (5 iterations) | 6702ms | 6199ms | 4968ms | 5080ms |
| tradesoap (5 iterations) | 20058ms | 18501ms | 21850ms | 20114ms |
| xalan (10 iterations) | 1080ms | 926ms | 788ms | 805ms |
Conclusion
Latest Apple JVM, 1.6.0-24 perform better than the old 1.6.0-22 in all of the tests and is near OpenJDK 7 results.
OpenJDK 7 from the bsd-port perform a little better than the macosx-port. The main difference in build is bsd-port is using stock gcc whereas macos-port use llvm-gcc.
bsd-port using stock-gcc during OpenJDK build
Compiling /Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/share/vm/adlc/arena.cpp rm -f ../generated/adfiles/arena.o /Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/ALT_COMPILER_PATH/g++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DAMD64 -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/share/vm/prims -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/share/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/cpu/x86/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/os_cpu/bsd_x86/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/os/bsd/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/os/posix/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/share/vm/adlc -I../generated -DASSERT -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_64 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_64 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1 -fno-rtti -fno-exceptions -pthread -fcheck-new -m64 -pipe -Werror -g -c -o ../generated/adfiles/arena.o /Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-bsdport-x86_64/workspace/hotspot/src/share/vm/adlc/arena.cpp
macosx-port using llvm-gcc during OpenJDK build
Compiling /Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/share/vm/adlc/arena.cpp rm -f ../generated/adfiles/arena.o llvm-g++ -D_ALLBSD_SOURCE -D_GNU_SOURCE -DIA32 -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/share/vm/prims -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/share/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/cpu/x86/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/os_cpu/bsd_x86/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/os/bsd/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/os/posix/vm -I/Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/share/vm/adlc -I../generated -DASSERT -DTARGET_OS_FAMILY_bsd -DTARGET_ARCH_x86 -DTARGET_ARCH_MODEL_x86_32 -DTARGET_OS_ARCH_bsd_x86 -DTARGET_OS_ARCH_MODEL_bsd_x86_32 -DTARGET_COMPILER_gcc -DCOMPILER2 -DCOMPILER1 -fno-rtti -fno-exceptions -pthread -fcheck-new -m32 -march=i586 -mstackrealign -pipe -Werror -g -c -o ../generated/adfiles/arena.o /Users/henri/Documents/jenkins/data/jobs/openjdk-1.7-macosx-universal/workspace/hotspot/src/share/vm/adlc/arena.cpp
Performances gain in OpenJDK7 VM vs latest Apple 6 VM is smaller than previously (see previous articles on Apple JDK vs OpenJDK 6), switching to OpenJDK 7 will not be only for pure speed but for functionalities.
Learn MoreOpenJDK 7 on OS/X and IntelliJ IDEA EAP
Last Updated on Samedi, 16 avril 2011 02:20 Written by Henri Gomez Samedi, 16 avril 2011 02:16
During the last weeks, Apple started to contribute it’s Aqua/Cocoa port to OpenJDK 7 on the macosx-port branch. It’s still works it progress but it was nice to see some SWING apps like IntelliJ IDEA works on the preliminary release.
I used IntelliJ IDEA EAP (10.5) and tweaked it’s startup shell.sh to define AWT_TOOLKIT=CToolkit and add -Dswing.defaultlaf=com.apple.laf.AquaLookAndFeel since Aqua Look and Feel is not default for now.
export CLASSPATH LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH export LD_LIBRARY_PATHAWT_TOOLKIT # AWT/Cocoa port for OpenJDK 7 macosx-port export=CToolkit JVM_ARGS="-Dswing.defaultlaf=com.apple.laf.AquaLookAndFeel $JVM_ARGS" cd "$IDEA_BIN_HOME" while true ; do $IDEA_JDK/bin/java $JVM_ARGS -Djb.restart.code=88 $IDEA_MAIN_CLASS_NAME $* test $? -ne 88 && break done
Then defined OpenJDK 7 from macosx port (available here) as default JVM and started IntelliJ by calling its shell script :
export JAVA_HOME=/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home /Applications/IdeaX-IU-106.396.app/bin/idea.sh
And I could see a Swing based application running on OpenJDK 7 and OS/X.
IntelliJ IDEA is so the second major IDE to be compatible with OpenJDK 7 and OS/X – Cocoa, first one was Eclipse thanks to it’s SWT/Cocoa bridge.
I tested with both NetBeans 7 RC1 and RC2 but it didn’t works. I hope it will be fixed in NetBeans 7 final release.



