lukecwik opened a new pull request, #24388:
URL: https://github.com/apache/beam/pull/24388

   The existing implementation only sampled the key/accumulator size but always 
measured the size of the window. Note the 50-75% improvement for non-globally 
windowed accumulation.
   
   There are also some trivial reductions hashCode/equality since we know that 
certain types are always non-null.
   
   Before
   ```
   Benchmark                                                 (distribution)  
(globallyWindowed)   Mode  Cnt   Score   Error  Units 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine         uniform        
        true  thrpt   15  12.775 ± 0.640  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine         uniform        
       false  thrpt   15   6.047 ± 0.535  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine          normal        
        true  thrpt   15   7.148 ± 0.473  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine          normal        
       false  thrpt   15   4.233 ± 0.239  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine          hotKey        
        true  thrpt   15  13.894 ± 0.649  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine          hotKey        
       false  thrp
 t   15   6.708 ± 0.375  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine      uniqueKeys        
        true  thrpt   15   2.286 ± 0.115  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine      uniqueKeys        
       false  thrpt   15   1.765 ± 0.064  ops/s
   ```
   
   After
   ```
   Benchmark                                                 (distribution)  
(globallyWindowed)   Mode  Cnt   Score   Error  Units 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine         uniform        
        true  thrpt   15  13.399 ± 0.241  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine         uniform        
       false  thrpt   15  11.522 ± 1.120  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine          normal        
        true  thrpt   15   7.186 ± 0.123  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine          normal        
       false  thrpt   15   6.578 ± 0.161  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine          hotKey        
        true  thrpt   15  13.467 ± 0.562  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine          hotKey        
       false  thrp
 t   15   9.704 ± 0.866  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine      uniqueKeys        
        true  thrpt   15   2.264 ± 0.110  ops/s 
PrecombineGroupingTableBenchmark.sumIntegerBinaryCombine      uniqueKeys        
       false  thrpt   15   2.255 ± 0.190  ops/s
   ```
   
   ------------------------
   
   Thank you for your contribution! Follow this checklist to help us 
incorporate your contribution quickly and easily:
   
    - [ ] [**Choose 
reviewer(s)**](https://beam.apache.org/contribute/#make-your-change) and 
mention them in a comment (`R: @username`).
    - [ ] Mention the appropriate issue in your description (for example: 
`addresses #123`), if applicable. This will automatically add a link to the 
pull request in the issue. If you would like the issue to automatically close 
on merging the pull request, comment `fixes #<ISSUE NUMBER>` instead.
    - [ ] Update `CHANGES.md` with noteworthy changes.
    - [ ] If this contribution is large, please file an Apache [Individual 
Contributor License Agreement](https://www.apache.org/licenses/icla.pdf).
   
   See the [Contributor Guide](https://beam.apache.org/contribute) for more 
tips on [how to make review process 
smoother](https://beam.apache.org/contribute/get-started-contributing/#make-the-reviewers-job-easier).
   
   To check the build health, please visit 
[https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md](https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md)
   
   GitHub Actions Tests Status (on master branch)
   
------------------------------------------------------------------------------------------------
   [![Build python source distribution and 
wheels](https://github.com/apache/beam/workflows/Build%20python%20source%20distribution%20and%20wheels/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Build+python+source+distribution+and+wheels%22+branch%3Amaster+event%3Aschedule)
   [![Python 
tests](https://github.com/apache/beam/workflows/Python%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Python+Tests%22+branch%3Amaster+event%3Aschedule)
   [![Java 
tests](https://github.com/apache/beam/workflows/Java%20Tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Java+Tests%22+branch%3Amaster+event%3Aschedule)
   [![Go 
tests](https://github.com/apache/beam/workflows/Go%20tests/badge.svg?branch=master&event=schedule)](https://github.com/apache/beam/actions?query=workflow%3A%22Go+tests%22+branch%3Amaster+event%3Aschedule)
   
   See [CI.md](https://github.com/apache/beam/blob/master/CI.md) for more 
information about GitHub Actions CI.
   


-- 
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: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to