Github user franz1981 commented on the issue:
https://github.com/apache/activemq-artemis/pull/1505
@clebertsuconic @tabish121 @gemmellr
I've used JMH to perform the burst tests (ie drainInBurst, pollInBurst) and
an unbounded offer/offerFirst (with pure accumulation, to kill any GC, using a
huge heap).
```
Benchmark
(qType) Mode Cnt Score Error Units
--------------------------------------------------------------------------------------------------------------------------------
Burst Size 1024
--------------------------------------------------------------------------------------------------------------------------------
QueueBenchmark.drainInBurst
JcLinkedList thrpt 5 56196.133 ± 9862.363 ops/s
QueueBenchmark.drainInBurst:·gc.count
JcLinkedList thrpt 5 4.000 counts
QueueBenchmark.drainInBurst:·gc.time
JcLinkedList thrpt 5 17.000 ms
QueueBenchmark.drainInBurst
ArtemisLinkedList thrpt 5 41398.925 ± 23173.625 ops/s
QueueBenchmark.drainInBurst:·gc.count
ArtemisLinkedList thrpt 5 2.000 counts
QueueBenchmark.drainInBurst:·gc.time
ArtemisLinkedList thrpt 5 9.000 ms
QueueBenchmark.drainInBurst
ChunkedQueue thrpt 5 105927.112 ± 37350.450 ops/s
QueueBenchmark.drainInBurst:·gc.count
ChunkedQueue thrpt 5 â 0 counts
QueueBenchmark.drainInBurst
ArrayDeque thrpt 5 107934.616 ± 32457.204 ops/s
QueueBenchmark.drainInBurst:·gc.count
ArrayDeque thrpt 5 â 0 counts
--------------------------------------------------------------------------------------------------------------------------------
QueueBenchmark.pollInBurst
JcLinkedList thrpt 5 81885.266 ± 17907.776 ops/s
QueueBenchmark.pollInBurst:·gc.count
JcLinkedList thrpt 5 13.000 counts
QueueBenchmark.pollInBurst:·gc.time
JcLinkedList thrpt 5 10.000 ms
QueueBenchmark.pollInBurst
ArtemisLinkedList thrpt 5 63050.521 ± 34661.415 ops/s
QueueBenchmark.pollInBurst:·gc.count
ArtemisLinkedList thrpt 5 18.000 counts
QueueBenchmark.pollInBurst:·gc.time
ArtemisLinkedList thrpt 5 16.000 ms
QueueBenchmark.pollInBurst
ChunkedQueue thrpt 5 161280.653 ± 13712.986 ops/s
QueueBenchmark.pollInBurst:·gc.count
ChunkedQueue thrpt 5 â 0 counts
QueueBenchmark.pollInBurst
ArrayDeque thrpt 5 161606.204 ± 16735.474 ops/s
QueueBenchmark.pollInBurst:·gc.count
ArrayDeque thrpt 5 â 0 counts
--------------------------------------------------------------------------------------------------------------------------------
QueueBenchmark.offer
JcLinkedList thrpt 5 6546939.112 ± 27962028.115 ops/s
QueueBenchmark.offer
ArtemisLinkedList thrpt 5 7366465.904 ± 31622858.611 ops/s
QueueBenchmark.offer
ChunkedQueue thrpt 5 41271280.062 ± 155829613.478 ops/s
--------------------------------------------------------------------------------------------------------------------------------
QueueBenchmark.offerFirst
JcLinkedList thrpt 5 5911597.446 ± 24163046.423 ops/s
QueueBenchmark.offerFirst
ArtemisLinkedList thrpt 5 3783064.578 ± 23493857.464 ops/s
QueueBenchmark.offerFirst
ChunkedQueue thrpt 5 35790062.086 ± 102802329.954 ops/s
```
As can be seen ChunkedQueue performs for fixed sized bursty scenarios like
an ArrayDeque (ie 1 order of magnitude better than any linked list) and for
accumulating burst (with no consume involved) one order of magnitude better
than a linked list (artemis or the Java Collection one).
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---