2MB cache size (full cpuinfo at end of email).  I don't really
understand why the numbers are as they are.... I've just run it again
with fairly different results:

JRockit:
Testing with 1 threads for 5 seconds
Generated 6,507,020 random ints using seed-many method
Generated 71,425,284 random ints using seed-once method
====================
Testing with 5 threads for 5 seconds
Generated 16,455,525 random ints using seed-many method
Generated 36,601,389 random ints using seed-once method
====================
Testing with 10 threads for 5 seconds
Generated 10,832,130 random ints using seed-many method
Generated 33,238,768 random ints using seed-once method
====================
Testing with 25 threads for 5 seconds
Generated 12,250,530 random ints using seed-many method
Generated 15,675,836 random ints using seed-once method
====================
Testing with 50 threads for 5 seconds
Generated 15,759,831 random ints using seed-many method
Generated 15,496,179 random ints using seed-once method
====================

Sun:

Testing with 1 threads for 5 seconds
Generated 5,983,931 random ints using seed-many method
Generated 52,035,107 random ints using seed-once method
====================
Testing with 5 threads for 5 seconds
Generated 16,943,464 random ints using seed-many method
Generated 10,462,359 random ints using seed-once method
====================
Testing with 10 threads for 5 seconds
Generated 17,020,737 random ints using seed-many method
Generated 10,650,710 random ints using seed-once method
====================
Testing with 25 threads for 5 seconds
Generated 17,172,693 random ints using seed-many method
Generated 10,710,387 random ints using seed-once method
====================
Testing with 50 threads for 5 seconds
Generated 17,081,978 random ints using seed-many method
Generated 10,803,786 random ints using seed-once method
====================

I'm not so convinced that there's not something else running on this
box affecting this as we seem to get unexplainable numbers...

cheesr,
dim

ps - I don't actually mind which way you go, do you guys use Random much?

[EMAIL PROTECTED] dim]$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                   Intel(R) Xeon(TM) CPU 3.60GHz
stepping        : 3
cpu MHz         : 3591.368
cache size      : 2048 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall
nx lm pni monitor ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7187.20
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 1
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                   Intel(R) Xeon(TM) CPU 3.60GHz
stepping        : 3
cpu MHz         : 3591.368
cache size      : 2048 KB
physical id     : 3
siblings        : 2
core id         : 3
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall
nx lm pni monitor ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7182.51
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 2
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                   Intel(R) Xeon(TM) CPU 3.60GHz
stepping        : 3
cpu MHz         : 3591.368
cache size      : 2048 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall
nx lm pni monitor ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7182.46
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:

processor       : 3
vendor_id       : GenuineIntel
cpu family      : 15
model           : 4
model name      :                   Intel(R) Xeon(TM) CPU 3.60GHz
stepping        : 3
cpu MHz         : 3591.368
cache size      : 2048 KB
physical id     : 3
siblings        : 2
core id         : 3
cpu cores       : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 5
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm syscall
nx lm pni monitor ds_cpl est tm2 cid cx16 xtpr
bogomips        : 7182.54
clflush size    : 64
cache_alignment : 128
address sizes   : 36 bits physical, 48 bits virtual
power management:



On 4/4/07, Ben Gunter <[EMAIL PROTECTED]> wrote:
> That's odd. I also ran it on a dual Xeon (2.4GHz). For the Windows test I
> ran it on a Core 2 Duo. One difference is I ran it on Java 6 and you ran it
> on Java 5. I can't explain the results. Look how seed-many jumped from ~6
> million to ~17 million from the first run to the second even though it
> should have been doing exactly the same thing both times.
>
> I just ran it on the same server under Java 5 and got similar results. Not
> sure what's going on. What size is your CPU cache? Mine is 512Kb. I wonder
> if that would have an effect.
>
>
> Dmitri Colebatch wrote:
> What hardware are you running that on? Dual CPU might change things.
Here's
> your code run on our test server (dual xeon Dell 1850).

[EMAIL PROTECTED] dim]$
> java -version
java version "1.5.0_06"
Java(TM) 2 Runtime Environment,
> Standard Edition (build 1.5.0_06-b05)
Java HotSpot(TM) Server VM (build
> 1.5.0_06-b05, mixed mode)

[EMAIL PROTECTED] dim]$ java RandomTest
Testing with 1
> threads for 5 seconds
Generated 5,963,439 random ints using seed-many
> method
Generated 51,890,734 random ints using seed-once
> method
====================
Testing with 5 threads for 5 seconds
Generated
> 17,021,507 random ints using seed-many method
Generated 11,540,379 random
> ints using seed-once method
====================
Testing with 10 threads for
> 5 seconds
Generated 17,067,507 random ints using seed-many method
Generated
> 12,153,002 random ints using seed-once method
====================
Testing
> with 25 threads for 5 seconds
Generated 17,068,201 random ints using
> seed-many method
Generated 12,252,194 random ints using seed-once
> method
====================
Testing with 50 threads for 5 seconds
Generated
> 17,388,417 random ints using seed-many method
Generated 11,822,572 random
> ints using seed-once method
====================

Mind you this changes a
> fair bit with JRockit:

[EMAIL PROTECTED] dim]$ java -version
java version
> "1.5.0_06"
Java(TM) 2 Runtime Environment, Standard Edition (build
> 1.5.0_06-b05)
BEA JRockit(R)
> (build
R26.4.0-63_CR302700-72606-1.5.0_06-20061127-1104-linux-ia32,
> )

[EMAIL PROTECTED] dim]$ java RandomTest
Testing with 1 threads for 5
> seconds
Generated 6,521,686 random ints using seed-many method
Generated
> 66,236,407 random ints using seed-once method
====================
Testing
> with 5 threads for 5 seconds
Generated 7,964,427 random ints using seed-many
> method
Generated 42,309,927 random ints using seed-once
> method
====================
Testing with 10 threads for 5 seconds
Generated
> 7,966,630 random ints using seed-many method
Generated 17,019,631 random
> ints using seed-once method
====================
Testing with 25 threads for
> 5 seconds
Generated 6,153,009 random ints using seed-many method
Generated
> 20,791,154 random ints using seed-once method
====================
Testing
> with 50 threads for 5 seconds
Generated 15,619,450 random ints using
> seed-many method
Generated 13,096,026 random ints using seed-once
> method
====================

I'm not sure if I'm prepared to draw any
> conclusions from this - my
logic would suggest that more CPUs would mean
> less synchronization
overhead, and hence better relative performance for
> seed-once, however
the above shows better performance for seed-many.... what
> am I
missing?

cheers
dim

On 4/4/07, Ben Gunter <[EMAIL PROTECTED]> wrote:
> As a follow-up to the lengthy conversation we had about java.util.Random
and
> whether it is best to reuse a single one and synchronize on it or
just
> create a new one each time, I wrote a program to compare the
performance of
> the two. Here are the results (CentOS 4.4, JDK 6):

Testing with 1 threads
> for 5 seconds
Generated 1,191,083 random ints using seed-many
> method
Generated 24,562,853 random ints using seed-once
> method
====================
Testing with 5 threads for 5 seconds
Generated
> 1,736,231 random ints using seed-many method
Generated 11,417,596 random
> ints using seed-once method
====================
Testing with 10 threads for
> 5 seconds
Generated 1,749,759 random ints using seed-many method
Generated
> 10,706,179 random ints using seed-once method
====================
Testing
> with 25 threads for 5 seconds
Generated 1,727,634 random ints using
> seed-many method
Generated 10,922,547 random ints using seed-once
> method
====================
Testing with 50 threads for 5 seconds
Generated
> 1,732,329 random ints using seed-many method
Generated 10,734,163 random
> ints using seed-once method
====================

The difference was less
> pronounced under Windows XP (JDK 6), but
seed-once still won:

Testing with
> 1 threads for 5 seconds
Generated 2,335,585 random ints using seed-many
> method
Generated 45,853,345 random ints using seed-once
> method
====================
Testing with 5 threads for 5 seconds
Generated
> 3,290,170 random ints using seed-many method
Generated 6,214,038 random ints
> using seed-once method
====================
Testing with 10 threads for 5
> seconds
Generated 3,283,141 random ints using seed-many method
Generated
> 6,706,248 random ints using seed-once method
====================
Testing
> with 25 threads for 5 seconds
Generated 3,258,902 random ints using
> seed-many method
Generated 6,597,599 random ints using seed-once
> method
====================
Testing with 50 threads for 5 seconds
Generated
> 3,244,338 random ints using seed-many method
Generated 6,650,498 random ints
> using seed-once method
====================

The source code is attached. If
> I messed up anywhere, please let me
> know.

-Ben


-------------------------------------------------------------------------
Take
> Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's
> Techsay panel and you'll get the chance to share your
opinions on IT &
> business topics through brief surveys-and earn
> cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Stripes-development
> mailing
> list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development



> -------------------------------------------------------------------------
Take
> Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's
> Techsay panel and you'll get the chance to share your
opinions on IT &
> business topics through brief surveys-and earn
> cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Stripes-development
> mailing
> list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Stripes-development mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/stripes-development
>
>

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Stripes-development mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/stripes-development

Reply via email to