-----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

Reply via email to