org.mentaqueue.test.producer
Class TestAll

java.lang.Object
  extended by org.mentaqueue.test.producer.TestAll

public class TestAll
extends Object

To run:

 java -Xms1g -Xmx4g -XX:NewSize=512m -XX:MaxNewSize=1024m -DtestNonBatchingQueues=true -cp target/classes org.mentaqueue.test.producer.TestAll 20 5 50 1000 1024
 
 format: java -Xms1g -Xmx4g -XX:NewSize=512m -XX:MaxNewSize=1024m -DtestUncheckedQueues=true -DtestNonBatchingQueues=true -cp target/classes org.mentaqueue.test.producer.TestAll IGNORE OUTLIERS RUNS MESSAGES BUFFER_SIZE
 IGNORE => How many initial runs will be ignored when calculating the average (warmup runs)?
 OUTLIERS => How many best and worst to remove?
 RUNS => How many times to run the test?
 MESSAGES => How many messages to send to the other thread? (in thousands)
 BUFFER_SIZE => How many messages can the buffer hold? (in multiples of 1024)
 

Latest results:

 ******************************************************************
   LINUX
 ******************************************************************
 
 Intel(R) Xeon(R) CPU E5345 @ 2.33GHz
 One physical processor with 6 logical processors
 Java HotSpot(TM) 64-Bit Server VM (build 20.2-b06, mixed mode)
 Linux soliveira-linux 2.6.32-30-generic x86_64 GNU/Linux
 
 Final results:
 
 1: BrokenFastQueue => 0 nanoseconds/message
 2: AtomicQueue => 6 nanoseconds/message
 3: VolatileQueue => 10 nanoseconds/message (1.67x)
 4: SynchronizedQueue => 20 nanoseconds/message (3.33x)
 5: LockedQueue => 41 nanoseconds/message (6.83x)
 6: AtomicQueue (*) => 49 nanoseconds/message (8.17x)
 7: ConcurrentLinkedQueue => 68 nanoseconds/message (11.33x)
 8: VolatileQueue (*) => 73 nanoseconds/message (12.17x)
 9: PooledConcurrentLinkedQueue => 134 nanoseconds/message (22.33x)
 10: PooledBlockingQueue => 172 nanoseconds/message (28.67x)
 11: BlockingQueue => 179 nanoseconds/message (29.83x)
 12: SynchronizedQueue (*) => 185 nanoseconds/message (30.83x)
 13: PooledBlockingLinkedQueue => 248 nanoseconds/message (41.33x)
 14: BlockingLinkedQueue => 249 nanoseconds/message (41.5x)
 15: BlockingLinkedQueue (*) => 265 nanoseconds/message (44.17x)
 16: BlockingQueue (*) => 267 nanoseconds/message (44.5x)
 17: BlockingArrayQueue => 278 nanoseconds/message (46.33x)
 18: PooledBlockingLinkedQueue (*) => 279 nanoseconds/message (46.5x)
 19: LockedQueue (*) => 316 nanoseconds/message (52.67x)
 20: PooledBlockingQueue (*) => 321 nanoseconds/message (53.5x)
 21: PooledBlockingArrayQueue => 323 nanoseconds/message (53.83x)
 22: BlockingArrayQueue (*) => 352 nanoseconds/message (58.67x)
 23: PooledBlockingArrayQueue (*) => 430 nanoseconds/message (71.67x)
 
 (*) => Non-batching mode
 
 Test details:
 
 Warmup iterations per queue: 20
 Outliers ignored (worst and best): 10
 Total number of iterations: 60 (considered: 30)
 Total number of messages sent to the other thread: 10,000,000
 Queue buffer size: 1,048,576
 Also test non-batching queues: true
 
 ******************************************************************
   LINUX - Two Physical Processors
 ******************************************************************
 
 2 x Intel(R) Xeon(R) CPU X5570 @ 2.93GHz
 Two physical processor with 8 logical processors
 Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
 Linux solievira-linux 2.6.32-220.7.1.el6.x86_64 x86_64 GNU/Linux
 
 Final results:
 
 1: BrokenFastQueue => 1 nanoseconds/message
 2: AtomicQueue => 9 nanoseconds/message
 3: VolatileQueue => 14 nanoseconds/message (1.56x)
 4: SynchronizedQueue => 124 nanoseconds/message (13.78x)
 5: AtomicQueue (*) => 151 nanoseconds/message (16.78x)
 6: ConcurrentLinkedQueue => 168 nanoseconds/message (18.67x)
 7: VolatileQueue (*) => 179 nanoseconds/message (19.89x)
 8: LockedQueue => 273 nanoseconds/message (30.33x)
 9: SynchronizedQueue (*) => 312 nanoseconds/message (34.67x)
 10: PooledConcurrentLinkedQueue => 340 nanoseconds/message (37.78x)
 11: BlockingQueue => 374 nanoseconds/message (41.56x)
 12: BlockingQueue (*) => 541 nanoseconds/message (60.11x)
 13: PooledBlockingLinkedQueue (*) => 604 nanoseconds/message (67.11x)
 14: PooledBlockingLinkedQueue => 605 nanoseconds/message (67.22x)
 15: LockedQueue (*) => 607 nanoseconds/message (67.44x)
 16: BlockingArrayQueue => 630 nanoseconds/message (70.0x)
 17: BlockingLinkedQueue => 631 nanoseconds/message (70.11x)
 18: PooledBlockingQueue => 641 nanoseconds/message (71.22x)
 19: PooledBlockingArrayQueue => 644 nanoseconds/message (71.56x)
 20: PooledBlockingArrayQueue (*) => 698 nanoseconds/message (77.56x)
 21: BlockingLinkedQueue (*) => 712 nanoseconds/message (79.11x)
 22: PooledBlockingQueue (*) => 745 nanoseconds/message (82.78x)
 23: BlockingArrayQueue (*) => 810 nanoseconds/message (90.0x)
 
 (*) => Non-batching mode
 
 Test details:
 
 Warmup iterations per queue: 20
 Outliers ignored (worst and best): 10
 Total number of iterations: 50 (considered: 20)
 Total number of messages sent to the other thread: 1,000,000
 Queue buffer size: 1,048,576
 Also test non-batching queues: true
 
 ******************************************************************
   MAC OSX
 ******************************************************************
 
 MacBook Pro Intel Core 2 Duo 2.53 GHz
 One physical processor with 2 logical processors
 Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02-402, mixed mode)
 Darwin soliveira.local 10.8.0 Darwin Kernel Version 10.8.0 root:xnu-1504.15.3~1/RELEASE_I386 i386
 
 Final results:
 
 1: BrokenFastQueue => 2 nanoseconds/message
 2: AtomicQueue => 16 nanoseconds/message
 3: AtomicQueue (*) => 26 nanoseconds/message (1.63x)
 4: VolatileQueue => 27 nanoseconds/message (1.69x)
 5: SynchronizedQueue => 35 nanoseconds/message (2.19x)
 6: LockedQueue => 53 nanoseconds/message (3.31x)
 7: VolatileQueue (*) => 60 nanoseconds/message (3.75x)
 8: ConcurrentLinkedQueue => 88 nanoseconds/message (5.5x)
 9: SynchronizedQueue (*) => 118 nanoseconds/message (7.38x)
 10: PooledConcurrentLinkedQueue => 150 nanoseconds/message (9.38x)
 11: LockedQueue (*) => 152 nanoseconds/message (9.5x)
 12: BlockingLinkedQueue => 237 nanoseconds/message (14.81x)
 13: BlockingLinkedQueue (*) => 241 nanoseconds/message (15.06x)
 14: PooledBlockingLinkedQueue => 250 nanoseconds/message (15.63x)
 15: BlockingArrayQueue => 266 nanoseconds/message (16.63x)
 16: BlockingQueue => 267 nanoseconds/message (16.69x)
 17: PooledBlockingQueue (*) => 270 nanoseconds/message (16.88x)
 18: BlockingQueue (*) => 273 nanoseconds/message (17.06x)
 19: PooledBlockingLinkedQueue (*) => 275 nanoseconds/message (17.19x)
 20: PooledBlockingArrayQueue => 287 nanoseconds/message (17.94x)
 21: PooledBlockingQueue => 297 nanoseconds/message (18.56x)
 22: BlockingArrayQueue (*) => 361 nanoseconds/message (22.56x)
 23: PooledBlockingArrayQueue (*) => 371 nanoseconds/message (23.19x)
 
 (*) => Non-batching mode
 
 Test details:
 
 Warmup iterations per queue: 20
 Outliers ignored (worst and best): 10
 Total number of iterations: 50 (considered: 20)
 Total number of messages sent to the other thread: 1,000,000
 Queue buffer size: 1,048,576
 Also test non-batching queues: true
 
 

Author:
Sergio Oliveira Jr.

Constructor Summary
TestAll()
           
 
Method Summary
static void main(String[] args)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TestAll

public TestAll()
Method Detail

main

public static void main(String[] args)
                 throws Exception
Throws:
Exception


Copyright © 2012. All Rights Reserved.