-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 All,
On 5/12/2009 9:38 AM, Caldarale, Charles R wrote: > Might be interesting to modify it to run with more cores, if you have > a system available. Here are the results I got on two different systems. Note that I compiled the test code using the 1.5 JVM though it shouldn't matter at all. I ran all these tests with little to no load on the server (I stopped all TC instances to keep people from hitting them and wasting server time :) SYSTEM 1: 32-bit GNU/Linux kernel 2.6.14 - -------- model name : AMD Athlon(tm) XP 1700+ cpu MHz : 1470.260 bogomips : 2945.26 *** Java 1.5/client $ java -version java version "1.5.0_13" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05) Java HotSpot(TM) Client VM (build 1.5.0_13-b05, mixed mode) $ java TestSynch 100000000 secondary atomic time: 2010; ticks: 48157094 primary atomic time: 1981; ticks: 51842907 primary synchronized time: 40940; ticks: 49988735 secondary synchronized time: 40850; ticks: 50011266 $ java TestSynch 100000000 secondary atomic time: 2032; ticks: 49652307 primary atomic time: 1997; ticks: 50347694 primary synchronized time: 41086; ticks: 55617866 secondary synchronized time: 40998; ticks: 44382135 *** Java 1.5/server $ java -version -server java version "1.5.0_13" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_13-b05) Java HotSpot(TM) Server VM (build 1.5.0_13-b05, mixed mode) $ java -server TestSynch 100000000 secondary atomic time: 897; ticks: 47771660 primary atomic time: 860; ticks: 52228341 primary synchronized time: 37749; ticks: 49503874 secondary synchronized time: 37644; ticks: 50496127 $ java -server TestSynch 100000000 primary atomic time: 882; ticks: 55689446 secondary atomic time: 955; ticks: 44310555 primary synchronized time: 39245; ticks: 45526991 secondary synchronized time: 39350; ticks: 54473010 *** Java 1.6/client $ java -version java version "1.6.0_13" Java(TM) SE Runtime Environment (build 1.6.0_13-b03) Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing) $ java TestSynch 100000000 secondary atomic time: 959; ticks: 47824199 primary atomic time: 980; ticks: 52175802 primary synchronized time: 26029; ticks: 56339037 secondary synchronized time: 24232; ticks: 43660964 $ java TestSynch 100000000 secondary atomic time: 1050; ticks: 47887651 primary atomic time: 1020; ticks: 52112350 secondary synchronized time: 25947; ticks: 42345253 primary synchronized time: 26042; ticks: 57654748 *** Java 1.6/server $ java -server -version java version "1.6.0_13" Java(TM) SE Runtime Environment (build 1.6.0_13-b03) Java HotSpot(TM) Server VM (build 11.3-b02, mixed mode, sharing) $ java -server TestSynch 100000000 secondary atomic time: 973; ticks: 46198801 primary atomic time: 942; ticks: 53801200 secondary synchronized time: 449; ticks: 3906780 primary synchronized time: 2256; ticks: 96093221 $ java -server TestSynch 100000000 secondary atomic time: 928; ticks: 55025620 primary atomic time: 924; ticks: 44974381 primary synchronized time: 2672; ticks: 44065122 secondary synchronized time: 2568; ticks: 55934879 SYSTEM 2: 32-bit Windows Vista SP1 - -------- Processor: Core 2 Duo "Merom" T7500 (2.2GHz) C:\Users\chris\Desktop>java -client -version java version "1.6.0_13" Java(TM) SE Runtime Environment (build 1.6.0_13-b03) Java HotSpot(TM) Client VM (build 11.3-b02, mixed mode, sharing) C:\Users\chris\Desktop>java -client TestSynch 100000000 primary atomic time: 4034; ticks: 52861711 secondary atomic time: 4034; ticks: 47138290 secondary synchronized time: 21446; ticks: 50758159 primary synchronized time: 21446; ticks: 49241842 C:\Users\chris\Desktop>java -client TestSynch 100000000 primary atomic time: 4351; ticks: 45396375 secondary atomic time: 4351; ticks: 54603626 secondary synchronized time: 18824; ticks: 50273205 primary synchronized time: 18824; ticks: 49726796 Oddly enough, I don't have the "server" VM installed, so I can't check that performance right now. Seems that on my two systems, atomics are faster than language-level synchronization, regardless of client versus server, or 1.5 versus 1.6 (though both using -server and 1.6 both give a significant performance boost to the language-level synchronization). I didn't find this code to exhibit high lock contention: there are only two threads at work, though they are doing nothing but acquiring locks (and incrementing integers, which should be trivial). - -chris -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.9 (MingW32) Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ iEYEARECAAYFAkoMXasACgkQ9CaO5/Lv0PCysACeKVMPuHn1HV32zgETXgD8bzFb t5oAniwV24MvuAarjpXUQwbhxweTMJ1P =T9f3 -----END PGP SIGNATURE----- --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org