Serialization Throughput
Additional Results

These results have been contributed by readers of a report I wrote regarding i/o benchmarks for Java serialization. Consult the original report for more details.

All results are plotted to the same scale with this custom program written in open source Squeak Smalltalk. I wrote a new program because I couldn't find one that could read tabbed text, write gifs, and do log plots all at the same time. I think my charts look much better than excel's. I hope you agree. If you look closely you will notice that the lines are transparent and anti-aliased. This let me use wider lines which look better in thumbnail. .

Send results to ward@c2.com. Be careful how you attach your files to be sure tabs are not converted to spaces.

CarlosVillela

Subject: Serialization Throughtput tests
Date: Tue, 15 Jan 2002 09:35:08 -0200
From: Carlos Villela 
Organization: CheckForte Processamento de Dados
To: Ward Cunningham 

Hi Ward,

I've run the serialization tests on the same machine with two different VMs.
Here is the output of java -version for each of them:

java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.3.1-FCS)
Java HotSpot(TM) Client VM (build Blackdown-1.3.1-FCS, mixed mode)

java version "1.3.1"
Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.3.1-FCS)
Java HotSpot(TM) Server VM (build Blackdown-1.3.1-FCS, mixed mode)

My machine is an Intel Pentium III (Coppermine) 800 MHz, 256 KB cache (rated
with 1592.52 bogomips), with a Fujitsu MPG3204AT E IDE disk, running Debian
GNU/Linux 3.0, kernel 2.4.12-686.

HTH

Carlos Villela
Throughput-client

raw data
Throughput-server

raw data

JoshFlowers

Subject: SerializationThroughput results
Date: Fri, 22 Feb 2002 23:41:35 -0500
From: Josh Flowers 
To: ward@c2.com

I'm not sure if your at all interested in data from different setups,
but here are the results for a 400Mhz G4 with a 7200rpm IDE hard drive
running OS X 10.1.2, and the 1.3.1 jre.

ThroughputTest

raw data

KlausWuestefeld

Subject: Serialization Throughput
Date: Fri, 4 Jan 2002 22:47:11 -0200
From: "klausw" 
To: ward@c2.com

Hi Ward,

Attached are the logs for 3 runs of your test on a
233Mhz PentiumII notebook running Windows 2000
Professional and JDK 1.3.0.

It is the same code you used with the maximum record
size increased to 200000 (instead of 50000):

     for (int n=1; n<200000; n=(int)(1.2*n)+1) {

It is curious that in all three runs, performance in
terms os Integers/sec improves until a certain limit and
then falls a little.

I haven't analyzed the data any further. I shall wait
for your pretty graphs.  :)

See you, Klaus.
run1

raw data
run2

raw data
run3

raw data

LeslieHensley

Subject: Serialization Throughput
Date: Thu, 10 Jan 2002 22:09:13 -0800 (PST)
From: Leslie Hensley 
To: ward@c2.com

Here are a couple of benchmarks under Linux (Red Hat
7.2) on my AMD Athalon 650 with an IDE hard drive.
The result using the Sun VM is in line with results
you have already posted, but the IBM seems
signifigantly faster.  I'm also including the result
from porting your benchmark to Ruby.  It performs
surprisingly well.  Here's a link containing more
information about the Ruby version:
http://www.papermountain.org/twiki/bin/view/Stuff/MarshallingBenchmark

JVM info:

[hensleyl@ralph ruby]$ /usr/java/j2sdk1.4.0/bin/java
-version
java version "1.4.0-beta"
Java(TM) 2 Runtime Environment, Standard Edition
(build 1.4.0-beta-b65)
Java HotSpot(TM) Client VM (build 1.4.0-beta-b65,
mixed mode)

[hensleyl@ralph ruby]$ /opt/IBMJava2-13/bin/java
-version
java version "1.3.0"
Java(TM) 2 Runtime Environment, Standard Edition
(build 1.3.0)
Classic VM (build 1.3.0, J2RE 1.3.0 IBM build
cx130-20010925 (JIT enabled: jitc))

I hope this is helpful.

Leslie Hensley
ibm13

raw data
ruby

raw data
sun14

raw data

NickLothian

Subject: Serialization Throughput Data
Date: Fri, 4 Jan 2002 15:51:52 +1030
From: Nick Lothian 
To: "'ward@c2.com'" 

Hi Ward,

I've run the SerializationThroughput benchmark on my machine (Pentium 3/700
with an IDE Hard Drive) under Windows 2000.

I tried two VMs - the MS virtual machine ( Microsoft (R) Command-line Loader
for Java  Version 5.00.3802 ), and the Sun JVM 1.3 ( Java(TM) 2 Runtime
Environment, Standard Edition (build 1.3.1-b24), Java HotSpot(TM) Client VM
(build 1.3.1-b24, mixed mode) ).

I've attached the two traces. You'll notice they are fairly similar - the
Sun VM handles large object slightly better, but they are close with smaller
objects.

You can observe some strange behaviour of records per second at small object
sizes (eg, record sizes 7,9,11,14 in both files). If it weren't for the fact
that both VMs behaviour similarly at the same record sizes I would have
thought it was an artifact of some kind. I couldn't think of a reasonable
explaination for this behaviour.

Anyway, I hope you find it interesting. Feel free to post the traces.

Regards
  Nick Lothian

msjava

raw data
sunjava

raw data

WardCunningham

These are the same files as reported in the 
original report. I only include them here to 
aid in comparison. -- Ward

	c2 & bk -- Kaffe on Linux
	dc	-- JDK on Win95
	q7	-- JDK on Win98
bk

raw data
c2

raw data
dc

raw data
q7

raw data