org.mentaqueue.test.producer
Class TestAll
java.lang.Object
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.
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
TestAll
public TestAll()
main
public static void main(String[] args)
throws Exception
- Throws:
Exception
Copyright © 2012. All Rights Reserved.