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.
---

Reply via email to