dajac opened a new pull request, #16088:
URL: https://github.com/apache/kafka/pull/16088

   This patch optimizes uniform (homogenous) assignor by avoiding creating a 
copy of all the assignments. Instead, the assignor creates a copy only if the 
assignment is updated. It is a sort of copy-on-write. This change reduces the 
overhead of the TargetAssignmentBuilder when ran with the uniform (homogenous) 
assignor.
   
   Trunk:
   
   ```
   Benchmark                                     (memberCount)  
(partitionsToMemberRatio)  (topicCount)  Mode  Cnt   Score   Error  Units
   TargetAssignmentBuilderBenchmark.build                10000                  
       10           100  avgt    5  24.535 ± 1.583  ms/op
   TargetAssignmentBuilderBenchmark.build                10000                  
       10          1000  avgt    5  24.094 ± 0.223  ms/op
   JMH benchmarks done
   ```
   
   ```
   Benchmark                                       (assignmentType)  
(assignorType)  (isRackAware)  (memberCount)  (partitionsToMemberRatio)  
(subscriptionType)  (topicCount)  Mode  Cnt   Score   Error  Units
   ServerSideAssignorBenchmark.doAssignment             INCREMENTAL         
UNIFORM          false          10000                         10         
HOMOGENEOUS           100  avgt    5  14.697 ± 0.133  ms/op
   ServerSideAssignorBenchmark.doAssignment             INCREMENTAL         
UNIFORM          false          10000                         10         
HOMOGENEOUS          1000  avgt    5  15.073 ± 0.135  ms/op
   JMH benchmarks done
   ```
   
   Patch:
   
   ```
   Benchmark                                     (memberCount)  
(partitionsToMemberRatio)  (topicCount)  Mode  Cnt  Score   Error  Units
   TargetAssignmentBuilderBenchmark.build                10000                  
       10           100  avgt    5  3.376 ± 0.577  ms/op
   TargetAssignmentBuilderBenchmark.build                10000                  
       10          1000  avgt    5  3.731 ± 0.359  ms/op
   JMH benchmarks done
   ```
   
   ```
   Benchmark                                       (assignmentType)  
(assignorType)  (isRackAware)  (memberCount)  (partitionsToMemberRatio)  
(subscriptionType)  (topicCount)  Mode  Cnt  Score   Error  Units
   ServerSideAssignorBenchmark.doAssignment             INCREMENTAL         
UNIFORM          false          10000                         10         
HOMOGENEOUS           100  avgt    5  1.975 ± 0.086  ms/op
   ServerSideAssignorBenchmark.doAssignment             INCREMENTAL         
UNIFORM          false          10000                         10         
HOMOGENEOUS          1000  avgt    5  2.026 ± 0.190  ms/op
   JMH benchmarks done
   ```
   
   ### Committer Checklist (excluded from commit message)
   - [ ] Verify design and implementation 
   - [ ] Verify test coverage and CI build status
   - [ ] Verify documentation (including upgrade notes)
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to