You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pinot.apache.org by GitBox <gi...@apache.org> on 2021/09/16 15:30:57 UTC

[GitHub] [pinot] richardstartin opened a new pull request #7442: ban prefix increment

richardstartin opened a new pull request #7442:
URL: https://github.com/apache/pinot/pull/7442


   ## Description
   This enforces a code style request made in review recently (don't use prefix increment in loop induction variable) but isn't context sensitive enough to only apply to loop induction variables.
   
   ## Upgrade Notes
   Does this PR prevent a zero down-time upgrade? (Assume upgrade order: Controller, Broker, Server, Minion)
   * [ ] Yes (Please label as **<code>backward-incompat</code>**, and complete the section below on Release Notes)
   
   Does this PR fix a zero-downtime upgrade introduced earlier?
   * [ ] Yes (Please label this as **<code>backward-incompat</code>**, and complete the section below on Release Notes)
   
   Does this PR otherwise need attention when creating release notes? Things to consider:
   - New configuration options
   - Deprecation of configurations
   - Signature changes to public methods/interfaces
   - New plugins added or old plugins removed
   * [ ] Yes (Please label this PR as **<code>release-notes</code>** and complete the section on Release Notes)
   ## Release Notes
   <!-- If you have tagged this as either backward-incompat or release-notes,
   you MUST add text here that you would like to see appear in release notes of the
   next release. -->
   
   <!-- If you have a series of commits adding or enabling a feature, then
   add this section only in final commit that marks the feature completed.
   Refer to earlier release notes to see examples of text.
   -->
   ## Documentation
   <!-- If you have introduced a new feature or configuration, please add it to the documentation as well.
   See https://docs.pinot.apache.org/developers/developers-and-contributors/update-document
   -->
   


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] amrishlal commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
amrishlal commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934556709


   @richardstartin I am not quite sure what you are trying to imply by dumping out assembly code, but a simple way to verify performance (that in java a loop with preincrement performs much better than a loop with postincrement) would be to run a simple performance test:
   
   ```
   % javac benchmark_opengenus.java 
   % java benchmark_opengenus 
   i++ took 2093664 nanoseconds
   ++i took 1521015 nanoseconds
   ++i took 72.65 % of time taken by i++
   ```
   
   The code for this benchmark is taken from the article (https://iq.opengenus.org/postfix-vs-prefix-increment-java/) that I posted above and I get similar results using different java versions on both mac and linux. We can't be banning preincrement in loops as that is exactly what we want to do to get better performance.


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] amrishlal commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
amrishlal commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-933991416


   Sorry, not sure if I missed anything here, but prefix increment is generally considered more performant than postfix increment mainly because postfix increment makes a copy of the original object; while as, prefix increment doesn't. If we use postfix increment in a loop, then that means making a copy for each iteration of the loop (and this can be fairly expensive). C++ / STL books almost always recommend using prefix increment for the same reason. If we were going to impose a standard, I thought it would be the other way (mandating prefix increment in loops and avoiding postfix increment)?
   
   https://iq.opengenus.org/postfix-vs-prefix-increment-java/
   
   


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] walterddr commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
walterddr commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-921953081


   a quick regexp search with `\w\+\+` for the entire java codebase yields more than 1k result. so i think majority of the code follows this convension. +1 to merge as is. 


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] amrishlal commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
amrishlal commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934889812


   If the Checkstyle rule makes no difference to performance where the rule applies then what is the motivation behind the ban?


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] richardstartin commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
richardstartin commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934110496


   @amrishlal my prefix increment habit comes from C++ days, but none of the above applies to Java - if in doubt you can dump out the JIT compiled assembly code with -XX:+PrintAssembly and check if it gets compiled differently 


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] mayankshriv merged pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
mayankshriv merged pull request #7442:
URL: https://github.com/apache/pinot/pull/7442


   


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] kishoreg edited a comment on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
kishoreg edited a comment on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934909659


   @amrishlal While we can continue to discuss further if this rule is good or bad, I don't think it's worth our time or your time.
   
   @richardstartin did not introduce this rule. We already have this as part of the coding convention in Pinot. What he is trying to do is codify that in check style so that the build catches it instead of relying on the reviewer to catch it. 
   
   If you really want to change the convention that is used since the start of the project, I encourage you to create another issue or discussion thread.
   
   Let's move on. We have so many other things to fix/improve in Pinot.


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] amrishlal edited a comment on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
amrishlal edited a comment on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934872313


   @richardstartin Pre and Post increment are fundamentally different in terms of their semantics and the difference in performance comes from the fact that post increment makes a copy while as pre-increment does not. A simple search would bring up many articles on this, but I am not seeing anything at all regarding banning pre/postincrement operator within loops.
   
   The loops that you wrote are extremely simple, to the point where the semantic difference between pre and post increment operators doesn't matter. Hence, the same underlying compiled code. However, that still doesn't lead to the conclusion that preincrement should be banned. We shouldn't be banning operators that are fundamental to a language.
   


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] richardstartin commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
richardstartin commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-921615924


   I think banning all prefix increments/decrements is extreme, so it would be better to make it context sensitive to loops or not do this at all if that isn't possible. Regardless, the size of the diff shows this style isn't generally observed within this codebase.


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] codecov-commenter commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
codecov-commenter commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-921148138


   # [Codecov](https://codecov.io/gh/apache/pinot/pull/7442?src=pr&el=h1&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) Report
   > Merging [#7442](https://codecov.io/gh/apache/pinot/pull/7442?src=pr&el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (a9d4773) into [master](https://codecov.io/gh/apache/pinot/commit/69a91acbead90b110800bbf98424415630f78527?el=desc&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) (69a91ac) will **decrease** coverage by `2.16%`.
   > The diff coverage is `69.23%`.
   
   > :exclamation: Current head a9d4773 differs from pull request most recent head 8312063. Consider uploading reports for the commit 8312063 to get more accurate results
   [![Impacted file tree graph](https://codecov.io/gh/apache/pinot/pull/7442/graphs/tree.svg?width=650&height=150&src=pr&token=4ibza2ugkz&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)](https://codecov.io/gh/apache/pinot/pull/7442?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)
   
   ```diff
   @@             Coverage Diff              @@
   ##             master    #7442      +/-   ##
   ============================================
   - Coverage     71.93%   69.76%   -2.17%     
   + Complexity     3346     3249      -97     
   ============================================
     Files          1516     1123     -393     
     Lines         75109    53150   -21959     
     Branches      10945     8008    -2937     
   ============================================
   - Hits          54026    37082   -16944     
   + Misses        17454    13439    -4015     
   + Partials       3629     2629    -1000     
   ```
   
   | Flag | Coverage Δ | |
   |---|---|---|
   | integration1 | `?` | |
   | integration2 | `?` | |
   | unittests1 | `69.76% <69.23%> (-0.02%)` | :arrow_down: |
   | unittests2 | `?` | |
   
   Flags with carried forward coverage won't be shown. [Click here](https://docs.codecov.io/docs/carryforward-flags?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#carryforward-flags-in-the-pull-request-comment) to find out more.
   
   | [Impacted Files](https://codecov.io/gh/apache/pinot/pull/7442?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) | Coverage Δ | |
   |---|---|---|
   | [...apache/pinot/pql/parsers/pql2/ast/BaseAstNode.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3QtY29tbW9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9waW5vdC9wcWwvcGFyc2Vycy9wcWwyL2FzdC9CYXNlQXN0Tm9kZS5qYXZh) | `50.00% <0.00%> (ø)` | |
   | [...t/pql/parsers/pql2/ast/BooleanOperatorAstNode.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3QtY29tbW9uL3NyYy9tYWluL2phdmEvb3JnL2FwYWNoZS9waW5vdC9wcWwvcGFyc2Vycy9wcWwyL2FzdC9Cb29sZWFuT3BlcmF0b3JBc3ROb2RlLmphdmE=) | `22.22% <0.00%> (ø)` | |
   | [...manager/realtime/LLRealtimeSegmentDataManager.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3QtY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3QvY29yZS9kYXRhL21hbmFnZXIvcmVhbHRpbWUvTExSZWFsdGltZVNlZ21lbnREYXRhTWFuYWdlci5qYXZh) | `46.72% <0.00%> (-25.35%)` | :arrow_down: |
   | [...pinot/segment/local/io/util/PinotDataBitSetV2.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3Qtc2VnbWVudC1sb2NhbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3Qvc2VnbWVudC9sb2NhbC9pby91dGlsL1Bpbm90RGF0YUJpdFNldFYyLmphdmE=) | `49.88% <20.00%> (-0.35%)` | :arrow_down: |
   | [...not/segment/local/customobject/QuantileDigest.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3Qtc2VnbWVudC1sb2NhbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3Qvc2VnbWVudC9sb2NhbC9jdXN0b21vYmplY3QvUXVhbnRpbGVEaWdlc3QuamF2YQ==) | `58.70% <75.00%> (ø)` | |
   | [...e/pinot/segment/local/io/util/PinotDataBitSet.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3Qtc2VnbWVudC1sb2NhbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3Qvc2VnbWVudC9sb2NhbC9pby91dGlsL1Bpbm90RGF0YUJpdFNldC5qYXZh) | `97.08% <90.90%> (+1.04%)` | :arrow_up: |
   | [...org/apache/pinot/core/data/table/TableResizer.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3QtY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3QvY29yZS9kYXRhL3RhYmxlL1RhYmxlUmVzaXplci5qYXZh) | `92.39% <100.00%> (ø)` | |
   | [...ry/optimizer/statement/JsonStatementOptimizer.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3QtY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3QvY29yZS9xdWVyeS9vcHRpbWl6ZXIvc3RhdGVtZW50L0pzb25TdGF0ZW1lbnRPcHRpbWl6ZXIuamF2YQ==) | `76.47% <100.00%> (ø)` | |
   | [...pache/pinot/core/util/SortedRangeIntersection.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3QtY29yZS9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3QvY29yZS91dGlsL1NvcnRlZFJhbmdlSW50ZXJzZWN0aW9uLmphdmE=) | `89.85% <100.00%> (ø)` | |
   | [.../impl/stats/SegmentPreIndexStatsCollectorImpl.java](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation#diff-cGlub3Qtc2VnbWVudC1sb2NhbC9zcmMvbWFpbi9qYXZhL29yZy9hcGFjaGUvcGlub3Qvc2VnbWVudC9sb2NhbC9zZWdtZW50L2NyZWF0b3IvaW1wbC9zdGF0cy9TZWdtZW50UHJlSW5kZXhTdGF0c0NvbGxlY3RvckltcGwuamF2YQ==) | `61.01% <100.00%> (ø)` | |
   | ... and [596 more](https://codecov.io/gh/apache/pinot/pull/7442/diff?src=pr&el=tree-more&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation) | |
   
   ------
   
   [Continue to review full report at Codecov](https://codecov.io/gh/apache/pinot/pull/7442?src=pr&el=continue&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation).
   > **Legend** - [Click here to learn more](https://docs.codecov.io/docs/codecov-delta?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation)
   > `Δ = absolute <relative> (impact)`, `ø = not affected`, `? = missing data`
   > Powered by [Codecov](https://codecov.io/gh/apache/pinot/pull/7442?src=pr&el=footer&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation). Last update [69a91ac...8312063](https://codecov.io/gh/apache/pinot/pull/7442?src=pr&el=lastupdated&utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation). Read the [comment docs](https://docs.codecov.io/docs/pull-request-comments?utm_medium=referral&utm_source=github&utm_content=comment&utm_campaign=pr+comments&utm_term=The+Apache+Software+Foundation).
   


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] kishoreg commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
kishoreg commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934909659


   @amrishlal While we can continue to discuss further on if this rule is good or bad, I don't think its worth our time or your time.
   
   @richardstartin did not introduce this rule. We already have this as part of the coding convention in Pinot. What he is trying to do is codify that in check style so that the build catches it instead of relying on the reviewer to catch it. 
   
   If you really want to change the convention that is used since the start of the project, I encourage you to create another issue or discussion thread.
   
   Let's move on. We have so many other things to fix/improve in Pinot.


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] Jackie-Jiang commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
Jackie-Jiang commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-921115935


   Thanks for adding this. I think we might be able to use the [DescendantTokenCheck](https://checkstyle.org/apidocs/com/puppycrawl/tools/checkstyle/checks/DescendantTokenCheck.html) feature to limit the check into the `FOR_ITERATOR` token


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] richardstartin commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
richardstartin commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934886208


   @amrishlal the loops in the benchmarks use increments in **the only places** that the pre-increments are banned. 
   
   Please add the following lines of code into any pinot module
   
   ```java
       int i = 1;
       ++i;
   ```
   
   and convince yourself that Checkstyle permits this code by building the module.
   
   Now try to write:
   
   ```java
   for (int i = 0; i < 10; ++i) {
   
   }
   ```
   
   and observe the checkstyle validation error:
   
   ```
   (misc) DescendantToken: Count of 1 for 'FOR_ITERATOR' descendant 'INC' exceeds maximum count 0.
   ```
   
   The loops in the benchmarks demonstrate that the Checkstyle rule makes no difference to performance **where the rule applies**, and they also demonstrate that principles from C++ don't always apply to JIT compiled languages.


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] amrishlal commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
amrishlal commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934899104


   I don't think this is a good rule to have, but will leave it at that for now.


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] richardstartin commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
richardstartin commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934892491


   > If the Checkstyle rule makes no difference to performance where the rule applies then what is the motivation behind the ban?
   
   Consistent style, please refer to the PR description.


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] richardstartin commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
richardstartin commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934674765


   @amrishlal Firstly, note that preincrement is only banned in loop bodies: https://github.com/apache/pinot/commit/0069fc3545b558cf7e49bccac4bf37a614433e48 this probably alleviates your concerns.
   
   Regarding how to increment loop induction variables, the reason to look at disassembly if you are concerned is that what you see is not what you get when Java executes on modern JVMs; the choice of preincrement and postincrement usually makes no difference to JIT compiled code. That benchmark isn't very well designed and isn't measuring what it purports to be. HotSpot has tiered JIT compilation which warms up as code executes. It does lots of smart things, like vectorizing loops (so neither pre nor post increment will be used) figuring out the variable `i` isn't used, and it even can eliminate the loop entirely. Benchmarks should be run with JMH to avoid these kinds of pitfalls, and JMH includes the perfasm profiler which correlates perf output with disassembler output, which allows you to dig in to what code actually executed during the benchmark.
   
   This benchmark below demonstrates this quite well. It has three kinds of loops
   
   1. the first one can be autovectorized
   2. the second one can be unrolled but not autovectorized
   3. the last one uses a `Blackhole` to prevent any unrolling
   
   There are two flavours of each loop: preincrement and postincrement.
   
   ```java
   import org.openjdk.jmh.annotations.*;
   import org.openjdk.jmh.infra.Blackhole;
   
   import java.util.concurrent.ThreadLocalRandom;
   
   @State(Scope.Benchmark)
   public class Increments {
   
     @Param("1024")
     int size;
   
     private int[] input;
     private int[] output;
   
     @Setup(Level.Trial)
     public void setup() {
       input = ThreadLocalRandom.current().ints(size).toArray();
       output = new int[size];
     }
   
     @Benchmark
     public void autovecPre(Blackhole bh) {
       for (int i = 0; i < input.length; ++i) {
         output[i] += input[i];
       }
       bh.consume(output);
     }
   
     @Benchmark
     public void autovecPost(Blackhole bh) {
       for (int i = 0; i < input.length; i++) {
         output[i] += input[i];
       }
       bh.consume(output);
     }
   
     @Benchmark
     public int reducePre(Blackhole bh) {
       int sum = 0;
       for (int i = 0; i < input.length; ++i) {
         sum += Integer.bitCount(input[i]);
       }
       return sum;
     }
   
     @Benchmark
     public int reducePost(Blackhole bh) {
       int sum = 0;
       for (int i = 0; i < input.length; i++) {
         sum += Integer.bitCount(input[i]);
       }
       return sum;
     }
   
     @Benchmark
     public void blackholedPre(Blackhole bh) {
       for (int i = 0; i < input.length; ++i) {
         bh.consume(i);
       }
     }
   
     @Benchmark
     public void blackholedPost(Blackhole bh) {
       for (int i = 0; i < input.length; i++) {
         bh.consume(i);
       }
     }
   
   }
   ```
   
   This benchmark was run on jdk11 on ubuntu, with the command `taskset -c 0 java -jar target/benchmarks.jar -wi 5 -i 5 -w 1 -r 1 -f 1 -bm avgt -tu ns Increments`
   Firstly, there is no difference in performance - any difference is well within the noise:
   
   ```
   Benchmark                  (size)  Mode  Cnt     Score   Error  Units
   Increments.autovecPost       1024  avgt    5   156.744 ± 0.416  ns/op
   Increments.autovecPre        1024  avgt    5   158.390 ± 0.096  ns/op
   Increments.blackholedPost    1024  avgt    5  2798.470 ± 2.657  ns/op
   Increments.blackholedPre     1024  avgt    5  2798.259 ± 2.553  ns/op
   Increments.reducePost        1024  avgt    5   456.012 ± 0.267  ns/op
   Increments.reducePre         1024  avgt    5   455.922 ± 0.299  ns/op
   ```
   
   What's interesting is that the generated code is identical in each case. 
   
   Firstly, `autovec*`. In each case, the loop strides over 64 integers at a time (8 256 bit registers). The loop increment is `add    $0x40,%edx` (add 64 to the induction variable) in each case.
   
   ```
   ....[Hottest Region 1]..............................................................................
   c2, level 4, com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub, version 472 (464 bytes) 
   
                          0x00007fd6f435aff4: vzeroupper 
                          0x00007fd6f435aff7: add    $0x30,%rsp
                          0x00007fd6f435affb: pop    %rbp
                          0x00007fd6f435affc: mov    0x108(%r15),%r10
                          0x00007fd6f435b003: test   %eax,(%r10)        ;   {poll_return}
                          0x00007fd6f435b006: retq   
                          0x00007fd6f435b007: nop                       ;*aload_0 {reexecute=0 rethrow=0 return_oop=0}
                                                                        ; - com.openkappa.runtime.inc.Increments::autovecPost@11 (line 34)
                                                                        ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
            ↗         ↗   0x00007fd6f435b008: vmovdqu 0x10(%r8,%rdx,4),%ymm0
     0.73%  │         │   0x00007fd6f435b00f: vpaddd 0x10(%r10,%rdx,4),%ymm0,%ymm0
     0.75%  │         │   0x00007fd6f435b016: vmovdqu %ymm0,0x10(%r8,%rdx,4)  ;*iastore {reexecute=0 rethrow=0 return_oop=0}
            │         │                                                 ; - com.openkappa.runtime.inc.Increments::autovecPost@25 (line 34)
            │         │                                                 ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
            │         │   0x00007fd6f435b01d: add    $0x8,%edx          ;*iinc {reexecute=0 rethrow=0 return_oop=0}
            │         │                                                 ; - com.openkappa.runtime.inc.Increments::autovecPost@26 (line 33)
            │         │                                                 ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.66%  │         │   0x00007fd6f435b020: cmp    %r9d,%edx
            ╰         │   0x00007fd6f435b023: jl     0x00007fd6f435b008  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                      │                                                 ; - com.openkappa.runtime.inc.Increments::autovecPost@8 (line 33)
                      │                                                 ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
                    ↗ │↗  0x00007fd6f435b025: cmp    %r11d,%edx
             ╭      │ ││  0x00007fd6f435b028: jge    0x00007fd6f435b03d
     0.02%   │      │ ││  0x00007fd6f435b02a: xchg   %ax,%ax            ;*aload_0 {reexecute=0 rethrow=0 return_oop=0}
             │      │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@11 (line 34)
             │      │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
             │↗     │ ││  0x00007fd6f435b02c: mov    0x10(%r10,%rdx,4),%ebx
     0.54%   ││     │ ││  0x00007fd6f435b031: add    %ebx,0x10(%r8,%rdx,4)  ;*iastore {reexecute=0 rethrow=0 return_oop=0}
             ││     │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@25 (line 34)
             ││     │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.58%   ││     │ ││  0x00007fd6f435b036: inc    %edx               ;*iinc {reexecute=0 rethrow=0 return_oop=0}
             ││     │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@26 (line 33)
             ││     │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.54%   ││     │ ││  0x00007fd6f435b038: cmp    %r11d,%edx
             │╰     │ ││  0x00007fd6f435b03b: jl     0x00007fd6f435b02c  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
             │      │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@8 (line 33)
             │      │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
             ↘ ↗    │ ││  0x00007fd6f435b03d: mov    %rcx,%rdx
     0.23%     │    │ ││  0x00007fd6f435b040: shl    $0x3,%rdx          ;*getfield output {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@12 (line 34)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
               │    │ ││  0x00007fd6f435b044: mov    0x10(%rsp),%rsi
     0.10%     │    │ ││  0x00007fd6f435b049: data16 xchg %ax,%ax
               │    │ ││  0x00007fd6f435b04c: vzeroupper 
     0.29%     │    │ ││  0x00007fd6f435b04f: callq  0x00007fd6ec89cb00  ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [16]=Oop }
               │    │ ││                                                ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@37 (line 36)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
               │    │ ││                                                ;   {optimized virtual_call}
               │    │ ││  0x00007fd6f435b054: mov    0x40(%rsp),%r10
     0.17%     │    │ ││  0x00007fd6f435b059: movzbl 0x94(%r10),%r10d   ;*goto {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@29 (line 33)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.10%     │    │ ││  0x00007fd6f435b061: mov    0x108(%r15),%r11
               │    │ ││  0x00007fd6f435b068: add    $0x1,%rbp          ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [16]=Oop }
               │    │ ││                                                ;*ifeq {reexecute=1 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@30 (line 234)
     0.08%     │    │ ││  0x00007fd6f435b06c: test   %eax,(%r11)        ;   {poll}
               │    │ ││  0x00007fd6f435b06f: test   %r10d,%r10d
               │    │ ││  0x00007fd6f435b072: jne    0x00007fd6f435afcf  ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@33 (line 235)
     0.02%     │    │ ││  0x00007fd6f435b078: mov    0x50(%rsp),%r10
               │    │ ││  0x00007fd6f435b07d: mov    0x10(%r10),%r10d   ;*getfield input {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@4 (line 33)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.12%     │    │ ││  0x00007fd6f435b081: mov    0xc(%r12,%r10,8),%r11d  ;*arraylength {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@7 (line 33)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
               │    │ ││                                                ; implicit exception: dispatches to 0x00007fd6f435b24c
               │    │ ││  0x00007fd6f435b086: mov    0x50(%rsp),%r8
     0.06%     │    │ ││  0x00007fd6f435b08b: mov    0x14(%r8),%ecx     ;*getfield output {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@12 (line 34)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
               │    │ ││  0x00007fd6f435b08f: test   %r11d,%r11d
               ╰    │ ││  0x00007fd6f435b092: jbe    0x00007fd6f435b03d  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@8 (line 33)
                    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.23%          │ ││  0x00007fd6f435b094: mov    0xc(%r12,%rcx,8),%r8d  ;*iaload {reexecute=0 rethrow=0 return_oop=0}
                    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@17 (line 34)
                    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
                    │ ││                                                ; implicit exception: dispatches to 0x00007fd6f435b1ed
                    │ ││  0x00007fd6f435b099: test   %r8d,%r8d
                ╭   │ ││  0x00007fd6f435b09c: jbe    0x00007fd6f435b1ed
     0.08%      │   │ ││  0x00007fd6f435b0a2: mov    %r11d,%r9d
                │   │ ││  0x00007fd6f435b0a5: dec    %r9d
     0.17%      │   │ ││  0x00007fd6f435b0a8: cmp    %r8d,%r9d
                │╭  │ ││  0x00007fd6f435b0ab: jae    0x00007fd6f435b1ed
                ││  │ ││  0x00007fd6f435b0b1: cmp    %r11d,%r9d
                ││╭ │ ││  0x00007fd6f435b0b4: jae    0x00007fd6f435b1ed
     0.08%      │││ │ ││  0x00007fd6f435b0ba: shl    $0x3,%r10
                │││ │ ││  0x00007fd6f435b0be: lea    (%r12,%rcx,8),%r8
     0.19%      │││ │ ││  0x00007fd6f435b0c2: mov    %r8d,%r9d
                │││ │ ││  0x00007fd6f435b0c5: shr    $0x2,%r9d
     0.06%      │││ │ ││  0x00007fd6f435b0c9: and    $0x7,%r9d
                │││ │ ││  0x00007fd6f435b0cd: mov    $0x3,%ebx
     0.19%      │││ │ ││  0x00007fd6f435b0d2: sub    %r9d,%ebx
                │││ │ ││  0x00007fd6f435b0d5: and    $0x7,%ebx
     0.06%      │││ │ ││  0x00007fd6f435b0d8: inc    %ebx
                │││ │ ││  0x00007fd6f435b0da: cmp    %r11d,%ebx
     0.08%      │││ │ ││  0x00007fd6f435b0dd: cmovg  %r11d,%ebx
                │││ │ ││  0x00007fd6f435b0e1: xor    %edx,%edx          ;*aload_0 {reexecute=0 rethrow=0 return_oop=0}
                │││ │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@11 (line 34)
                │││ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.48%      │││↗│ ││  0x00007fd6f435b0e3: mov    0x10(%r10,%rdx,4),%edi
                │││││ ││  0x00007fd6f435b0e8: add    %edi,0x10(%r8,%rdx,4)  ;*iastore {reexecute=0 rethrow=0 return_oop=0}
                │││││ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@25 (line 34)
                │││││ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.95%      │││││ ││  0x00007fd6f435b0ed: inc    %edx               ;*iinc {reexecute=0 rethrow=0 return_oop=0}
                │││││ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@26 (line 33)
                │││││ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
                │││││ ││  0x00007fd6f435b0ef: cmp    %ebx,%edx
                │││╰│ ││  0x00007fd6f435b0f1: jl     0x00007fd6f435b0e3  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                │││ │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@8 (line 33)
                │││ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.02%      │││ │ ││  0x00007fd6f435b0f3: mov    %r11d,%ebx
                │││ │ ││  0x00007fd6f435b0f6: add    $0xffffffc1,%ebx
     0.21%      │││ │ ││  0x00007fd6f435b0f9: cmp    %ebx,%edx
                │││ ╰ ││  0x00007fd6f435b0fb: jge    0x00007fd6f435b025  ;*aload_0 {reexecute=0 rethrow=0 return_oop=0}
                │││   ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@11 (line 34)
                │││   ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     2.90%      │││  ↗││  0x00007fd6f435b101: vmovdqu 0x10(%r8,%rdx,4),%ymm0
     0.04%      │││  │││  0x00007fd6f435b108: vpaddd 0x10(%r10,%rdx,4),%ymm0,%ymm0
    10.08%      │││  │││  0x00007fd6f435b10f: vmovdqu %ymm0,0x10(%r8,%rdx,4)
     1.00%      │││  │││  0x00007fd6f435b116: vmovdqu 0x30(%r8,%rdx,4),%ymm0
                │││  │││  0x00007fd6f435b11d: vpaddd 0x30(%r10,%rdx,4),%ymm0,%ymm0
     9.27%      │││  │││  0x00007fd6f435b124: vmovdqu %ymm0,0x30(%r8,%rdx,4)
     0.79%      │││  │││  0x00007fd6f435b12b: vmovdqu 0x50(%r8,%rdx,4),%ymm0
                │││  │││  0x00007fd6f435b132: vpaddd 0x50(%r10,%rdx,4),%ymm0,%ymm0
     8.07%      │││  │││  0x00007fd6f435b139: vmovdqu %ymm0,0x50(%r8,%rdx,4)
     0.89%      │││  │││  0x00007fd6f435b140: vmovdqu 0x70(%r8,%rdx,4),%ymm0
                │││  │││  0x00007fd6f435b147: vpaddd 0x70(%r10,%rdx,4),%ymm0,%ymm0
     9.58%      │││  │││  0x00007fd6f435b14e: vmovdqu %ymm0,0x70(%r8,%rdx,4)
     0.52%      │││  │││  0x00007fd6f435b155: vmovdqu 0x90(%r8,%rdx,4),%ymm0
                │││  │││  0x00007fd6f435b15f: vpaddd 0x90(%r10,%rdx,4),%ymm0,%ymm0
     8.34%      │││  │││  0x00007fd6f435b169: vmovdqu %ymm0,0x90(%r8,%rdx,4)
     0.64%      │││  │││  0x00007fd6f435b173: vmovdqu 0xb0(%r8,%rdx,4),%ymm0
                │││  │││  0x00007fd6f435b17d: vpaddd 0xb0(%r10,%rdx,4),%ymm0,%ymm0
     9.71%      │││  │││  0x00007fd6f435b187: vmovdqu %ymm0,0xb0(%r8,%rdx,4)
     0.58%      │││  │││  0x00007fd6f435b191: vmovdqu 0xd0(%r8,%rdx,4),%ymm0
                │││  │││  0x00007fd6f435b19b: vpaddd 0xd0(%r10,%rdx,4),%ymm0,%ymm0
    14.68%      │││  │││  0x00007fd6f435b1a5: vmovdqu %ymm0,0xd0(%r8,%rdx,4)
     0.54%      │││  │││  0x00007fd6f435b1af: vmovdqu 0xf0(%r8,%rdx,4),%ymm0
                │││  │││  0x00007fd6f435b1b9: vpaddd 0xf0(%r10,%rdx,4),%ymm0,%ymm0
     9.46%      │││  │││  0x00007fd6f435b1c3: vmovdqu %ymm0,0xf0(%r8,%rdx,4)  ;*iastore {reexecute=0 rethrow=0 return_oop=0}
                │││  │││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@25 (line 34)
                │││  │││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
     0.52%      │││  │││  0x00007fd6f435b1cd: add    $0x40,%edx         ;*iinc {reexecute=0 rethrow=0 return_oop=0}
                │││  │││                                                ; - com.openkappa.runtime.inc.Increments::autovecPost@26 (line 33)
                │││  │││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
                │││  │││  0x00007fd6f435b1d0: cmp    %ebx,%edx
                │││  ╰││  0x00007fd6f435b1d2: jl     0x00007fd6f435b101
     0.23%      │││   ││  0x00007fd6f435b1d8: mov    %r11d,%r9d
                │││   ││  0x00007fd6f435b1db: add    $0xfffffff9,%r9d
     0.10%      │││   ││  0x00007fd6f435b1df: cmp    %r9d,%edx
                │││   ╰│  0x00007fd6f435b1e2: jl     0x00007fd6f435b008
                │││    ╰  0x00007fd6f435b1e8: jmpq   0x00007fd6f435b025  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                │││                                                     ; - com.openkappa.runtime.inc.Increments::autovecPost@8 (line 33)
                │││                                                     ; - com.openkappa.runtime.inc.generated.Increments_autovecPost_jmhTest::autovecPost_avgt_jmhStub@17 (line 232)
                ↘↘↘       0x00007fd6f435b1ed: mov    $0xffffff7e,%esi
                          0x00007fd6f435b1f2: mov    %r11d,0x18(%rsp)
                          0x00007fd6f435b1f7: nop
                          0x00007fd6f435b1f8: vzeroupper 
                          0x00007fd6f435b1fb: callq  0x00007fd6ec89d280  ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [16]=Oop }
                                                                        ;*if_icmpge {reexecute=1 rethrow=0 return_oop=0}
   ....................................................................................................
    95.73%  <total for region 1>
   ```
   
   ```
   ....[Hottest Region 1]..............................................................................
   c2, level 4, com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub, version 460 (464 bytes) 
   
                                                                        ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
                          0x00007f44cc35d2f4: vzeroupper 
                          0x00007f44cc35d2f7: add    $0x30,%rsp
                          0x00007f44cc35d2fb: pop    %rbp
                          0x00007f44cc35d2fc: mov    0x108(%r15),%r10
                          0x00007f44cc35d303: test   %eax,(%r10)        ;   {poll_return}
                          0x00007f44cc35d306: retq   
                          0x00007f44cc35d307: nop                       ;*aload_0 {reexecute=0 rethrow=0 return_oop=0}
                                                                        ; - com.openkappa.runtime.inc.Increments::autovecPre@11 (line 26)
                                                                        ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.77%  ↗         ↗   0x00007f44cc35d308: vmovdqu 0x10(%r8,%rdx,4),%ymm0
     0.25%  │         │   0x00007f44cc35d30f: vpaddd 0x10(%r10,%rdx,4),%ymm0,%ymm0
     3.27%  │         │   0x00007f44cc35d316: vmovdqu %ymm0,0x10(%r8,%rdx,4)  ;*iastore {reexecute=0 rethrow=0 return_oop=0}
            │         │                                                 ; - com.openkappa.runtime.inc.Increments::autovecPre@25 (line 26)
            │         │                                                 ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.29%  │         │   0x00007f44cc35d31d: add    $0x8,%edx          ;*iinc {reexecute=0 rethrow=0 return_oop=0}
            │         │                                                 ; - com.openkappa.runtime.inc.Increments::autovecPre@26 (line 25)
            │         │                                                 ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.10%  │         │   0x00007f44cc35d320: cmp    %r9d,%edx
            ╰         │   0x00007f44cc35d323: jl     0x00007f44cc35d308  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                      │                                                 ; - com.openkappa.runtime.inc.Increments::autovecPre@8 (line 25)
                      │                                                 ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.19%          ↗ │↗  0x00007f44cc35d325: cmp    %r11d,%edx
             ╭      │ ││  0x00007f44cc35d328: jge    0x00007f44cc35d33d
             │      │ ││  0x00007f44cc35d32a: xchg   %ax,%ax            ;*aload_0 {reexecute=0 rethrow=0 return_oop=0}
             │      │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@11 (line 26)
             │      │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.50%   │↗     │ ││  0x00007f44cc35d32c: mov    0x10(%r10,%rdx,4),%ebx
             ││     │ ││  0x00007f44cc35d331: add    %ebx,0x10(%r8,%rdx,4)  ;*iastore {reexecute=0 rethrow=0 return_oop=0}
             ││     │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@25 (line 26)
             ││     │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     1.06%   ││     │ ││  0x00007f44cc35d336: inc    %edx               ;*iinc {reexecute=0 rethrow=0 return_oop=0}
             ││     │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@26 (line 25)
             ││     │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
             ││     │ ││  0x00007f44cc35d338: cmp    %r11d,%edx
             │╰     │ ││  0x00007f44cc35d33b: jl     0x00007f44cc35d32c  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
             │      │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@8 (line 25)
             │      │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.10%   ↘ ↗    │ ││  0x00007f44cc35d33d: mov    %rcx,%rdx
               │    │ ││  0x00007f44cc35d340: shl    $0x3,%rdx          ;*getfield output {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@12 (line 26)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.17%     │    │ ││  0x00007f44cc35d344: mov    0x10(%rsp),%rsi
               │    │ ││  0x00007f44cc35d349: data16 xchg %ax,%ax
     0.10%     │    │ ││  0x00007f44cc35d34c: vzeroupper 
     0.10%     │    │ ││  0x00007f44cc35d34f: callq  0x00007f44c489cb00  ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [16]=Oop }
               │    │ ││                                                ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@37 (line 28)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
               │    │ ││                                                ;   {optimized virtual_call}
     0.02%     │    │ ││  0x00007f44cc35d354: mov    0x40(%rsp),%r10
     0.08%     │    │ ││  0x00007f44cc35d359: movzbl 0x94(%r10),%r10d   ;*goto {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@29 (line 25)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
               │    │ ││  0x00007f44cc35d361: mov    0x108(%r15),%r11
     0.04%     │    │ ││  0x00007f44cc35d368: add    $0x1,%rbp          ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [16]=Oop }
               │    │ ││                                                ;*ifeq {reexecute=1 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@30 (line 234)
               │    │ ││  0x00007f44cc35d36c: test   %eax,(%r11)        ;   {poll}
     0.25%     │    │ ││  0x00007f44cc35d36f: test   %r10d,%r10d
               │    │ ││  0x00007f44cc35d372: jne    0x00007f44cc35d2cf  ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@33 (line 235)
               │    │ ││  0x00007f44cc35d378: mov    0x50(%rsp),%r10
     0.04%     │    │ ││  0x00007f44cc35d37d: mov    0x10(%r10),%r10d   ;*getfield input {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@4 (line 25)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
               │    │ ││  0x00007f44cc35d381: mov    0xc(%r12,%r10,8),%r11d  ;*arraylength {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@7 (line 25)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
               │    │ ││                                                ; implicit exception: dispatches to 0x00007f44cc35d54c
     0.15%     │    │ ││  0x00007f44cc35d386: mov    0x50(%rsp),%r8
               │    │ ││  0x00007f44cc35d38b: mov    0x14(%r8),%ecx     ;*getfield output {reexecute=0 rethrow=0 return_oop=0}
               │    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@12 (line 26)
               │    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.04%     │    │ ││  0x00007f44cc35d38f: test   %r11d,%r11d
               ╰    │ ││  0x00007f44cc35d392: jbe    0x00007f44cc35d33d  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@8 (line 25)
                    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.06%          │ ││  0x00007f44cc35d394: mov    0xc(%r12,%rcx,8),%r8d  ;*iaload {reexecute=0 rethrow=0 return_oop=0}
                    │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@17 (line 26)
                    │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
                    │ ││                                                ; implicit exception: dispatches to 0x00007f44cc35d4ed
     0.27%          │ ││  0x00007f44cc35d399: test   %r8d,%r8d
                ╭   │ ││  0x00007f44cc35d39c: jbe    0x00007f44cc35d4ed
     0.15%      │   │ ││  0x00007f44cc35d3a2: mov    %r11d,%r9d
                │   │ ││  0x00007f44cc35d3a5: dec    %r9d
     0.17%      │   │ ││  0x00007f44cc35d3a8: cmp    %r8d,%r9d
                │╭  │ ││  0x00007f44cc35d3ab: jae    0x00007f44cc35d4ed
     0.08%      ││  │ ││  0x00007f44cc35d3b1: cmp    %r11d,%r9d
                ││╭ │ ││  0x00007f44cc35d3b4: jae    0x00007f44cc35d4ed
     0.19%      │││ │ ││  0x00007f44cc35d3ba: shl    $0x3,%r10
                │││ │ ││  0x00007f44cc35d3be: lea    (%r12,%rcx,8),%r8
                │││ │ ││  0x00007f44cc35d3c2: mov    %r8d,%r9d
     0.12%      │││ │ ││  0x00007f44cc35d3c5: shr    $0x2,%r9d
     0.04%      │││ │ ││  0x00007f44cc35d3c9: and    $0x7,%r9d
                │││ │ ││  0x00007f44cc35d3cd: mov    $0x3,%ebx
                │││ │ ││  0x00007f44cc35d3d2: sub    %r9d,%ebx
     0.10%      │││ │ ││  0x00007f44cc35d3d5: and    $0x7,%ebx
     0.17%      │││ │ ││  0x00007f44cc35d3d8: inc    %ebx
                │││ │ ││  0x00007f44cc35d3da: cmp    %r11d,%ebx
                │││ │ ││  0x00007f44cc35d3dd: cmovg  %r11d,%ebx
     0.06%      │││ │ ││  0x00007f44cc35d3e1: xor    %edx,%edx          ;*aload_0 {reexecute=0 rethrow=0 return_oop=0}
                │││ │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@11 (line 26)
                │││ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.19%      │││↗│ ││  0x00007f44cc35d3e3: mov    0x10(%r10,%rdx,4),%edi
     0.21%      │││││ ││  0x00007f44cc35d3e8: add    %edi,0x10(%r8,%rdx,4)  ;*iastore {reexecute=0 rethrow=0 return_oop=0}
                │││││ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@25 (line 26)
                │││││ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.50%      │││││ ││  0x00007f44cc35d3ed: inc    %edx               ;*iinc {reexecute=0 rethrow=0 return_oop=0}
                │││││ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@26 (line 25)
                │││││ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.21%      │││││ ││  0x00007f44cc35d3ef: cmp    %ebx,%edx
                │││╰│ ││  0x00007f44cc35d3f1: jl     0x00007f44cc35d3e3  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                │││ │ ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@8 (line 25)
                │││ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.08%      │││ │ ││  0x00007f44cc35d3f3: mov    %r11d,%ebx
                │││ │ ││  0x00007f44cc35d3f6: add    $0xffffffc1,%ebx
                │││ │ ││  0x00007f44cc35d3f9: cmp    %ebx,%edx
                │││ ╰ ││  0x00007f44cc35d3fb: jge    0x00007f44cc35d325  ;*aload_0 {reexecute=0 rethrow=0 return_oop=0}
                │││   ││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@11 (line 26)
                │││   ││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     3.25%      │││  ↗││  0x00007f44cc35d401: vmovdqu 0x10(%r8,%rdx,4),%ymm0
     0.42%      │││  │││  0x00007f44cc35d408: vpaddd 0x10(%r10,%rdx,4),%ymm0,%ymm0
     9.16%      │││  │││  0x00007f44cc35d40f: vmovdqu %ymm0,0x10(%r8,%rdx,4)
     1.29%      │││  │││  0x00007f44cc35d416: vmovdqu 0x30(%r8,%rdx,4),%ymm0
                │││  │││  0x00007f44cc35d41d: vpaddd 0x30(%r10,%rdx,4),%ymm0,%ymm0
     8.47%      │││  │││  0x00007f44cc35d424: vmovdqu %ymm0,0x30(%r8,%rdx,4)
     0.60%      │││  │││  0x00007f44cc35d42b: vmovdqu 0x50(%r8,%rdx,4),%ymm0
                │││  │││  0x00007f44cc35d432: vpaddd 0x50(%r10,%rdx,4),%ymm0,%ymm0
    13.43%      │││  │││  0x00007f44cc35d439: vmovdqu %ymm0,0x50(%r8,%rdx,4)
     1.04%      │││  │││  0x00007f44cc35d440: vmovdqu 0x70(%r8,%rdx,4),%ymm0
                │││  │││  0x00007f44cc35d447: vpaddd 0x70(%r10,%rdx,4),%ymm0,%ymm0
     7.91%      │││  │││  0x00007f44cc35d44e: vmovdqu %ymm0,0x70(%r8,%rdx,4)
     0.58%      │││  │││  0x00007f44cc35d455: vmovdqu 0x90(%r8,%rdx,4),%ymm0
                │││  │││  0x00007f44cc35d45f: vpaddd 0x90(%r10,%rdx,4),%ymm0,%ymm0
     9.66%      │││  │││  0x00007f44cc35d469: vmovdqu %ymm0,0x90(%r8,%rdx,4)
     0.58%      │││  │││  0x00007f44cc35d473: vmovdqu 0xb0(%r8,%rdx,4),%ymm0
                │││  │││  0x00007f44cc35d47d: vpaddd 0xb0(%r10,%rdx,4),%ymm0,%ymm0
     9.14%      │││  │││  0x00007f44cc35d487: vmovdqu %ymm0,0xb0(%r8,%rdx,4)
     0.50%      │││  │││  0x00007f44cc35d491: vmovdqu 0xd0(%r8,%rdx,4),%ymm0
                │││  │││  0x00007f44cc35d49b: vpaddd 0xd0(%r10,%rdx,4),%ymm0,%ymm0
     9.08%      │││  │││  0x00007f44cc35d4a5: vmovdqu %ymm0,0xd0(%r8,%rdx,4)
     0.83%      │││  │││  0x00007f44cc35d4af: vmovdqu 0xf0(%r8,%rdx,4),%ymm0
                │││  │││  0x00007f44cc35d4b9: vpaddd 0xf0(%r10,%rdx,4),%ymm0,%ymm0
     8.52%      │││  │││  0x00007f44cc35d4c3: vmovdqu %ymm0,0xf0(%r8,%rdx,4)  ;*iastore {reexecute=0 rethrow=0 return_oop=0}
                │││  │││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@25 (line 26)
                │││  │││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
     0.37%      │││  │││  0x00007f44cc35d4cd: add    $0x40,%edx         ;*iinc {reexecute=0 rethrow=0 return_oop=0}
                │││  │││                                                ; - com.openkappa.runtime.inc.Increments::autovecPre@26 (line 25)
                │││  │││                                                ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
                │││  │││  0x00007f44cc35d4d0: cmp    %ebx,%edx
                │││  ╰││  0x00007f44cc35d4d2: jl     0x00007f44cc35d401
     0.15%      │││   ││  0x00007f44cc35d4d8: mov    %r11d,%r9d
                │││   ││  0x00007f44cc35d4db: add    $0xfffffff9,%r9d
                │││   ││  0x00007f44cc35d4df: cmp    %r9d,%edx
                │││   ╰│  0x00007f44cc35d4e2: jl     0x00007f44cc35d308
                │││    ╰  0x00007f44cc35d4e8: jmpq   0x00007f44cc35d325  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                │││                                                     ; - com.openkappa.runtime.inc.Increments::autovecPre@8 (line 25)
                │││                                                     ; - com.openkappa.runtime.inc.generated.Increments_autovecPre_jmhTest::autovecPre_avgt_jmhStub@17 (line 232)
                ↘↘↘       0x00007f44cc35d4ed: mov    $0xffffff7e,%esi
                          0x00007f44cc35d4f2: mov    %r11d,0x18(%rsp)
                          0x00007f44cc35d4f7: nop
                          0x00007f44cc35d4f8: vzeroupper 
   ....................................................................................................
    95.13%  <total for region 1>
   
   ```
   
   Now `reduce*`. The loop is unrolled 8 ways. The increment is identical in each case: `add    $0x8,%esi` (increment the loop induction variable by 8).
   
   ```
   ....[Hottest Region 1]..............................................................................
   c2, level 4, com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub, version 456 (196 bytes) 
   
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
                0x00007fd150359dfd: add    $0x30,%rsp
                0x00007fd150359e01: pop    %rbp
                0x00007fd150359e02: mov    0x108(%r15),%r10
                0x00007fd150359e09: test   %eax,(%r10)        ;   {poll_return}
                0x00007fd150359e0c: retq   
                0x00007fd150359e0d: data16 xchg %ax,%ax       ;*iload_2 {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@13 (line 52)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
            ↗   0x00007fd150359e10: popcnt 0x10(%rdi,%rsi,4),%r8d
     1.14%  │   0x00007fd150359e17: add    %r8d,%edx          ;*iadd {reexecute=0 rethrow=0 return_oop=0}
            │                                                 ; - com.openkappa.runtime.inc.Increments::reducePost@23 (line 52)
            │                                                 ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
     0.48%  │   0x00007fd150359e1a: inc    %esi               ;*iinc {reexecute=0 rethrow=0 return_oop=0}
            │                                                 ; - com.openkappa.runtime.inc.Increments::reducePost@25 (line 51)
            │                                                 ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
            │   0x00007fd150359e1c: cmp    %r11d,%esi
            ╰   0x00007fd150359e1f: jl     0x00007fd150359e10  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@10 (line 51)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
                0x00007fd150359e21: mov    (%rsp),%rsi
                0x00007fd150359e25: xchg   %ax,%ax
     0.17%      0x00007fd150359e27: callq  0x00007fd14889cb00  ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [0]=Oop }
                                                              ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@22 (line 232)
                                                              ;   {optimized virtual_call}
     0.77%      0x00007fd150359e2c: mov    0x40(%rsp),%r10
                0x00007fd150359e31: movzbl 0x94(%r10),%r10d   ;*goto {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@28 (line 51)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
                0x00007fd150359e39: mov    0x108(%r15),%r11
     0.02%      0x00007fd150359e40: add    $0x1,%rbp          ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [0]=Oop }
                                                              ;*ifeq {reexecute=1 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@35 (line 234)
                0x00007fd150359e44: test   %eax,(%r11)        ;   {poll}
                0x00007fd150359e47: test   %r10d,%r10d
                0x00007fd150359e4a: jne    0x00007fd150359ddb  ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@38 (line 235)
                0x00007fd150359e4c: mov    0x50(%rsp),%r10
     0.08%      0x00007fd150359e51: mov    0x10(%r10),%r10d   ;*getfield input {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@6 (line 51)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
                0x00007fd150359e55: mov    0xc(%r12,%r10,8),%r11d  ;*arraylength {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@9 (line 51)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
                                                              ; implicit exception: dispatches to 0x00007fd150359f46
                0x00007fd150359e5a: test   %r11d,%r11d
                0x00007fd150359e5d: jbe    0x00007fd150359ef0  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@10 (line 51)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
     0.02%      0x00007fd150359e63: mov    %r11d,%r8d
     0.06%      0x00007fd150359e66: dec    %r8d
                0x00007fd150359e69: cmp    %r11d,%r8d
                0x00007fd150359e6c: jae    0x00007fd150359ef7
     0.04%      0x00007fd150359e72: popcnt 0x10(%r12,%r10,8),%edx  ;*invokestatic bitCount {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@20 (line 52)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
     0.02%      0x00007fd150359e79: lea    (%r12,%r10,8),%rdi
     0.08%      0x00007fd150359e7d: mov    %r11d,%ebx
                0x00007fd150359e80: add    $0xfffffff9,%ebx
                0x00007fd150359e83: cmp    $0x1,%ebx
                0x00007fd150359e86: jle    0x00007fd150359f08
                0x00007fd150359e8c: mov    $0x1,%esi          ;*iload_2 {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@13 (line 52)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
     0.06%   ↗  0x00007fd150359e91: popcnt 0x2c(%rdi,%rsi,4),%r10d
             │  0x00007fd150359e98: popcnt 0x28(%rdi,%rsi,4),%r8d
    10.20%   │  0x00007fd150359e9f: popcnt 0x10(%rdi,%rsi,4),%r9d
     0.02%   │  0x00007fd150359ea6: add    %r9d,%edx
     0.15%   │  0x00007fd150359ea9: popcnt 0x14(%rdi,%rsi,4),%ecx
             │  0x00007fd150359eaf: add    %ecx,%edx
    10.91%   │  0x00007fd150359eb1: popcnt 0x18(%rdi,%rsi,4),%r9d
     0.04%   │  0x00007fd150359eb8: add    %r9d,%edx
    10.28%   │  0x00007fd150359ebb: popcnt 0x1c(%rdi,%rsi,4),%ecx
             │  0x00007fd150359ec1: add    %ecx,%edx
    10.51%   │  0x00007fd150359ec3: popcnt 0x20(%rdi,%rsi,4),%r9d
     7.78%   │  0x00007fd150359eca: add    %r9d,%edx
    10.43%   │  0x00007fd150359ecd: popcnt 0x24(%rdi,%rsi,4),%ecx
     2.07%   │  0x00007fd150359ed3: add    %ecx,%edx
    10.60%   │  0x00007fd150359ed5: add    %r8d,%edx
    10.45%   │  0x00007fd150359ed8: add    %r10d,%edx         ;*iadd {reexecute=0 rethrow=0 return_oop=0}
             │                                                ; - com.openkappa.runtime.inc.Increments::reducePost@23 (line 52)
             │                                                ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
    10.55%   │  0x00007fd150359edb: add    $0x8,%esi          ;*iinc {reexecute=0 rethrow=0 return_oop=0}
             │                                                ; - com.openkappa.runtime.inc.Increments::reducePost@25 (line 51)
             │                                                ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
             │  0x00007fd150359ede: cmp    %ebx,%esi
             ╰  0x00007fd150359ee0: jl     0x00007fd150359e91  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePost@10 (line 51)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePost_jmhTest::reducePost_avgt_jmhStub@19 (line 232)
                0x00007fd150359ee2: cmp    %r11d,%esi
                0x00007fd150359ee5: jl     0x00007fd150359e10
   ....................................................................................................
    96.93%  <total for region 1>
   ```
   ```
   ....[Hottest Region 1]..............................................................................
   c2, level 4, com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub, version 468 (196 bytes) 
   
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
                0x00007fddc3b1b2fd: add    $0x30,%rsp
                0x00007fddc3b1b301: pop    %rbp
                0x00007fddc3b1b302: mov    0x108(%r15),%r10
                0x00007fddc3b1b309: test   %eax,(%r10)        ;   {poll_return}
                0x00007fddc3b1b30c: retq   
                0x00007fddc3b1b30d: data16 xchg %ax,%ax       ;*iload_2 {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@13 (line 43)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
            ↗   0x00007fddc3b1b310: popcnt 0x10(%rdi,%rsi,4),%r8d
     1.03%  │   0x00007fddc3b1b317: add    %r8d,%edx          ;*iadd {reexecute=0 rethrow=0 return_oop=0}
            │                                                 ; - com.openkappa.runtime.inc.Increments::reducePre@23 (line 43)
            │                                                 ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
     0.42%  │   0x00007fddc3b1b31a: inc    %esi               ;*iinc {reexecute=0 rethrow=0 return_oop=0}
            │                                                 ; - com.openkappa.runtime.inc.Increments::reducePre@25 (line 42)
            │                                                 ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
            │   0x00007fddc3b1b31c: cmp    %r11d,%esi
            ╰   0x00007fddc3b1b31f: jl     0x00007fddc3b1b310  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@10 (line 42)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
                0x00007fddc3b1b321: mov    (%rsp),%rsi
                0x00007fddc3b1b325: xchg   %ax,%ax
     0.07%      0x00007fddc3b1b327: callq  0x00007fddbc05cb00  ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [0]=Oop }
                                                              ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@22 (line 232)
                                                              ;   {optimized virtual_call}
     0.75%      0x00007fddc3b1b32c: mov    0x40(%rsp),%r10
                0x00007fddc3b1b331: movzbl 0x94(%r10),%r10d   ;*goto {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@28 (line 42)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
                0x00007fddc3b1b339: mov    0x108(%r15),%r11
     0.09%      0x00007fddc3b1b340: add    $0x1,%rbp          ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [0]=Oop }
                                                              ;*ifeq {reexecute=1 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@35 (line 234)
                0x00007fddc3b1b344: test   %eax,(%r11)        ;   {poll}
                0x00007fddc3b1b347: test   %r10d,%r10d
                0x00007fddc3b1b34a: jne    0x00007fddc3b1b2db  ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@38 (line 235)
     0.02%      0x00007fddc3b1b34c: mov    0x50(%rsp),%r10
     0.07%      0x00007fddc3b1b351: mov    0x10(%r10),%r10d   ;*getfield input {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@6 (line 42)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
                0x00007fddc3b1b355: mov    0xc(%r12,%r10,8),%r11d  ;*arraylength {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@9 (line 42)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
                                                              ; implicit exception: dispatches to 0x00007fddc3b1b446
     0.02%      0x00007fddc3b1b35a: test   %r11d,%r11d
                0x00007fddc3b1b35d: jbe    0x00007fddc3b1b3f0  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@10 (line 42)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
                0x00007fddc3b1b363: mov    %r11d,%r8d
     0.09%      0x00007fddc3b1b366: dec    %r8d
                0x00007fddc3b1b369: cmp    %r11d,%r8d
                0x00007fddc3b1b36c: jae    0x00007fddc3b1b3f7
                0x00007fddc3b1b372: popcnt 0x10(%r12,%r10,8),%edx  ;*invokestatic bitCount {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@20 (line 43)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
     0.02%      0x00007fddc3b1b379: lea    (%r12,%r10,8),%rdi
     0.07%      0x00007fddc3b1b37d: mov    %r11d,%ebx
                0x00007fddc3b1b380: add    $0xfffffff9,%ebx
                0x00007fddc3b1b383: cmp    $0x1,%ebx
                0x00007fddc3b1b386: jle    0x00007fddc3b1b408
                0x00007fddc3b1b38c: mov    $0x1,%esi          ;*iload_2 {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@13 (line 43)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
     0.09%   ↗  0x00007fddc3b1b391: popcnt 0x2c(%rdi,%rsi,4),%r10d
             │  0x00007fddc3b1b398: popcnt 0x28(%rdi,%rsi,4),%r8d
    10.58%   │  0x00007fddc3b1b39f: popcnt 0x10(%rdi,%rsi,4),%r9d
     0.02%   │  0x00007fddc3b1b3a6: add    %r9d,%edx
     0.15%   │  0x00007fddc3b1b3a9: popcnt 0x14(%rdi,%rsi,4),%ecx
             │  0x00007fddc3b1b3af: add    %ecx,%edx
    10.36%   │  0x00007fddc3b1b3b1: popcnt 0x18(%rdi,%rsi,4),%r9d
     0.02%   │  0x00007fddc3b1b3b8: add    %r9d,%edx
    10.45%   │  0x00007fddc3b1b3bb: popcnt 0x1c(%rdi,%rsi,4),%ecx
             │  0x00007fddc3b1b3c1: add    %ecx,%edx
    10.06%   │  0x00007fddc3b1b3c3: popcnt 0x20(%rdi,%rsi,4),%r9d
     9.17%   │  0x00007fddc3b1b3ca: add    %r9d,%edx
    10.65%   │  0x00007fddc3b1b3cd: popcnt 0x24(%rdi,%rsi,4),%ecx
     1.65%   │  0x00007fddc3b1b3d3: add    %ecx,%edx
    10.23%   │  0x00007fddc3b1b3d5: add    %r8d,%edx
    10.47%   │  0x00007fddc3b1b3d8: add    %r10d,%edx         ;*iadd {reexecute=0 rethrow=0 return_oop=0}
             │                                                ; - com.openkappa.runtime.inc.Increments::reducePre@23 (line 43)
             │                                                ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
    10.06%   │  0x00007fddc3b1b3db: add    $0x8,%esi          ;*iinc {reexecute=0 rethrow=0 return_oop=0}
             │                                                ; - com.openkappa.runtime.inc.Increments::reducePre@25 (line 42)
             │                                                ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
             │  0x00007fddc3b1b3de: cmp    %ebx,%esi
             ╰  0x00007fddc3b1b3e0: jl     0x00007fddc3b1b391  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
                                                              ; - com.openkappa.runtime.inc.Increments::reducePre@10 (line 42)
                                                              ; - com.openkappa.runtime.inc.generated.Increments_reducePre_jmhTest::reducePre_avgt_jmhStub@19 (line 232)
                0x00007fddc3b1b3e2: cmp    %r11d,%esi
                0x00007fddc3b1b3e5: jl     0x00007fddc3b1b310
   ....................................................................................................
    96.61%  <total for region 1>
   ```
   
   Finally, when no unrolling is possible in `blackholed`, there is still no difference. The loop induction variable is just incremented each time `inc  %ebp`  (the surrounding instructions are also identical).
   
   ```
   ....[Hottest Region 2]..............................................................................
   c2, level 4, com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub, version 454 (102 bytes) 
   
                                                                  ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@27 (line 234)
                                                                  ; implicit exception: dispatches to 0x00007f90bc35c190
                    0x00007f90bc35c04e: test   %r10d,%r10d
            ╭       0x00007f90bc35c051: jne    0x00007f90bc35c0d3  ;*ifeq {reexecute=0 rethrow=0 return_oop=0}
            │                                                     ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@30 (line 234)
            │       0x00007f90bc35c057: mov    (%rsp),%r10
            │       0x00007f90bc35c05b: test   %r10,%r10
            │       0x00007f90bc35c05e: je     0x00007f90bc35c124
            │       0x00007f90bc35c064: mov    $0x1,%ebx
            │╭      0x00007f90bc35c069: jmp    0x00007f90bc35c090
     0.19%  ││  ↗   0x00007f90bc35c06b: mov    0x8(%rsp),%rbx     ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
            ││  │                                                 ; - com.openkappa.runtime.inc.Increments::blackholedPre@8 (line 59)
            ││  │                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@17 (line 232)
     0.09%  ││ ↗│   0x00007f90bc35c070: mov    0x40(%rsp),%r10
            ││ ││   0x00007f90bc35c075: movzbl 0x94(%r10),%r11d   ;*ifeq {reexecute=0 rethrow=0 return_oop=0}
            ││ ││                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@30 (line 234)
     0.13%  ││ ││   0x00007f90bc35c07d: mov    0x108(%r15),%r10
            ││ ││   0x00007f90bc35c084: add    $0x1,%rbx          ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [0]=Oop }
            ││ ││                                                 ;*ifeq {reexecute=1 rethrow=0 return_oop=0}
            ││ ││                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@30 (line 234)
            ││ ││   0x00007f90bc35c088: test   %eax,(%r10)        ;   {poll}
            ││ ││   0x00007f90bc35c08b: test   %r11d,%r11d
            ││╭││   0x00007f90bc35c08e: jne    0x00007f90bc35c0d8  ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
            │││││                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@33 (line 235)
            │↘│││   0x00007f90bc35c090: mov    0x50(%rsp),%r10
            │ │││   0x00007f90bc35c095: mov    0x10(%r10),%r11d   ;*getfield input {reexecute=0 rethrow=0 return_oop=0}
            │ │││                                                 ; - com.openkappa.runtime.inc.Increments::blackholedPre@4 (line 59)
            │ │││                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@17 (line 232)
     0.02%  │ │││   0x00007f90bc35c099: mov    0xc(%r12,%r11,8),%r10d  ; implicit exception: dispatches to 0x00007f90bc35c168
     0.09%  │ │││   0x00007f90bc35c09e: test   %r10d,%r10d
            │ │╰│   0x00007f90bc35c0a1: jbe    0x00007f90bc35c070  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
            │ │ │                                                 ; - com.openkappa.runtime.inc.Increments::blackholedPre@8 (line 59)
            │ │ │                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@17 (line 232)
            │ │ │   0x00007f90bc35c0a3: xor    %ebp,%ebp
            │ │ │   0x00007f90bc35c0a5: mov    %rbx,0x8(%rsp)
            │ │ │   0x00007f90bc35c0aa: nopw   0x0(%rax,%rax,1)   ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
            │ │ │                                                 ; - com.openkappa.runtime.inc.Increments::blackholedPre@11 (line 60)
            │ │ │                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@17 (line 232)
     3.75%  │ │ │↗  0x00007f90bc35c0b0: mov    (%rsp),%rsi
     2.07%  │ │ ││  0x00007f90bc35c0b4: mov    %ebp,%edx
     2.32%  │ │ ││  0x00007f90bc35c0b6: nop
     5.20%  │ │ ││  0x00007f90bc35c0b7: callq  0x00007f90b489cb00  ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [0]=Oop }
            │ │ ││                                                ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0}
            │ │ ││                                                ; - com.openkappa.runtime.inc.Increments::blackholedPre@13 (line 60)
            │ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@17 (line 232)
            │ │ ││                                                ;   {optimized virtual_call}
     3.64%  │ │ ││  0x00007f90bc35c0bc: mov    0x50(%rsp),%r10
     4.90%  │ │ ││  0x00007f90bc35c0c1: mov    0x10(%r10),%r10d   ;*getfield input {reexecute=0 rethrow=0 return_oop=0}
            │ │ ││                                                ; - com.openkappa.runtime.inc.Increments::blackholedPre@4 (line 59)
            │ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@17 (line 232)
     5.20%  │ │ ││  0x00007f90bc35c0c5: mov    0xc(%r12,%r10,8),%r11d  ; implicit exception: dispatches to 0x00007f90bc35c140
     6.75%  │ │ ││  0x00007f90bc35c0ca: inc    %ebp               ;*iinc {reexecute=0 rethrow=0 return_oop=0}
            │ │ ││                                                ; - com.openkappa.runtime.inc.Increments::blackholedPre@16 (line 59)
            │ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@17 (line 232)
     1.85%  │ │ ││  0x00007f90bc35c0cc: cmp    %r11d,%ebp
            │ │ ╰│  0x00007f90bc35c0cf: jge    0x00007f90bc35c06b  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
            │ │  │                                                ; - com.openkappa.runtime.inc.Increments::blackholedPre@8 (line 59)
            │ │  │                                                ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@17 (line 232)
     5.39%  │ │  ╰  0x00007f90bc35c0d1: jmp    0x00007f90bc35c0b0
            ↘ │     0x00007f90bc35c0d3: mov    $0x1,%ebx          ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
              │                                                   ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@33 (line 235)
              ↘     0x00007f90bc35c0d8: movabs $0x7f90d36d7cb0,%r10
                    0x00007f90bc35c0e2: callq  *%r10              ;*invokestatic nanoTime {reexecute=0 rethrow=0 return_oop=0}
                                                                  ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@34 (line 235)
                    0x00007f90bc35c0e5: mov    0x48(%rsp),%r10
                    0x00007f90bc35c0ea: mov    %rbx,0x18(%r10)    ;*putfield measuredOps {reexecute=0 rethrow=0 return_oop=0}
                                                                  ; - com.openkappa.runtime.inc.generated.Increments_blackholedPre_jmhTest::blackholedPre_avgt_jmhStub@49 (line 237)
   ....................................................................................................
    41.59%  <total for region 2>
   
   ```
   
   ```
   ....[Hottest Region 2]..............................................................................
   c2, level 4, com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub, version 466 (102 bytes) 
   
                                                                  ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@27 (line 234)
                                                                  ; implicit exception: dispatches to 0x00007f307035ba10
                    0x00007f307035b8ce: test   %r10d,%r10d
            ╭       0x00007f307035b8d1: jne    0x00007f307035b953  ;*ifeq {reexecute=0 rethrow=0 return_oop=0}
            │                                                     ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@30 (line 234)
            │       0x00007f307035b8d7: mov    (%rsp),%r10
            │       0x00007f307035b8db: test   %r10,%r10
            │       0x00007f307035b8de: je     0x00007f307035b9a4
            │       0x00007f307035b8e4: mov    $0x1,%ebx
            │╭      0x00007f307035b8e9: jmp    0x00007f307035b910
     0.17%  ││  ↗   0x00007f307035b8eb: mov    0x8(%rsp),%rbx     ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
            ││  │                                                 ; - com.openkappa.runtime.inc.Increments::blackholedPost@8 (line 66)
            ││  │                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@17 (line 232)
     0.02%  ││ ↗│   0x00007f307035b8f0: mov    0x40(%rsp),%r10
            ││ ││   0x00007f307035b8f5: movzbl 0x94(%r10),%r11d   ;*ifeq {reexecute=0 rethrow=0 return_oop=0}
            ││ ││                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@30 (line 234)
     0.11%  ││ ││   0x00007f307035b8fd: mov    0x108(%r15),%r10
            ││ ││   0x00007f307035b904: add    $0x1,%rbx          ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [0]=Oop }
            ││ ││                                                 ;*ifeq {reexecute=1 rethrow=0 return_oop=0}
            ││ ││                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@30 (line 234)
            ││ ││   0x00007f307035b908: test   %eax,(%r10)        ;   {poll}
     0.04%  ││ ││   0x00007f307035b90b: test   %r11d,%r11d
            ││╭││   0x00007f307035b90e: jne    0x00007f307035b958  ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
            │││││                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@33 (line 235)
            │↘│││   0x00007f307035b910: mov    0x50(%rsp),%r10
            │ │││   0x00007f307035b915: mov    0x10(%r10),%r11d   ;*getfield input {reexecute=0 rethrow=0 return_oop=0}
            │ │││                                                 ; - com.openkappa.runtime.inc.Increments::blackholedPost@4 (line 66)
            │ │││                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@17 (line 232)
     0.06%  │ │││   0x00007f307035b919: mov    0xc(%r12,%r11,8),%r10d  ; implicit exception: dispatches to 0x00007f307035b9e8
     0.04%  │ │││   0x00007f307035b91e: test   %r10d,%r10d
            │ │╰│   0x00007f307035b921: jbe    0x00007f307035b8f0  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
            │ │ │                                                 ; - com.openkappa.runtime.inc.Increments::blackholedPost@8 (line 66)
            │ │ │                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@17 (line 232)
            │ │ │   0x00007f307035b923: xor    %ebp,%ebp
            │ │ │   0x00007f307035b925: mov    %rbx,0x8(%rsp)
            │ │ │   0x00007f307035b92a: nopw   0x0(%rax,%rax,1)   ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
            │ │ │                                                 ; - com.openkappa.runtime.inc.Increments::blackholedPost@11 (line 67)
            │ │ │                                                 ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@17 (line 232)
     4.14%  │ │ │↗  0x00007f307035b930: mov    (%rsp),%rsi
     2.72%  │ │ ││  0x00007f307035b934: mov    %ebp,%edx
     2.18%  │ │ ││  0x00007f307035b936: nop
     5.22%  │ │ ││  0x00007f307035b937: callq  0x00007f306889cb00  ; ImmutableOopMap{[64]=Oop [72]=Oop [80]=Oop [0]=Oop }
            │ │ ││                                                ;*invokevirtual consume {reexecute=0 rethrow=0 return_oop=0}
            │ │ ││                                                ; - com.openkappa.runtime.inc.Increments::blackholedPost@13 (line 67)
            │ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@17 (line 232)
            │ │ ││                                                ;   {optimized virtual_call}
     3.84%  │ │ ││  0x00007f307035b93c: mov    0x50(%rsp),%r10
     4.19%  │ │ ││  0x00007f307035b941: mov    0x10(%r10),%r10d   ;*getfield input {reexecute=0 rethrow=0 return_oop=0}
            │ │ ││                                                ; - com.openkappa.runtime.inc.Increments::blackholedPost@4 (line 66)
            │ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@17 (line 232)
     4.75%  │ │ ││  0x00007f307035b945: mov    0xc(%r12,%r10,8),%r11d  ; implicit exception: dispatches to 0x00007f307035b9c0
     6.78%  │ │ ││  0x00007f307035b94a: inc    %ebp               ;*iinc {reexecute=0 rethrow=0 return_oop=0}
            │ │ ││                                                ; - com.openkappa.runtime.inc.Increments::blackholedPost@16 (line 66)
            │ │ ││                                                ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@17 (line 232)
     2.16%  │ │ ││  0x00007f307035b94c: cmp    %r11d,%ebp
            │ │ ╰│  0x00007f307035b94f: jge    0x00007f307035b8eb  ;*if_icmpge {reexecute=0 rethrow=0 return_oop=0}
            │ │  │                                                ; - com.openkappa.runtime.inc.Increments::blackholedPost@8 (line 66)
            │ │  │                                                ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@17 (line 232)
     4.83%  │ │  ╰  0x00007f307035b951: jmp    0x00007f307035b930
            ↘ │     0x00007f307035b953: mov    $0x1,%ebx          ;*aload_1 {reexecute=0 rethrow=0 return_oop=0}
              │                                                   ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@33 (line 235)
              ↘     0x00007f307035b958: movabs $0x7f3087995cb0,%r10
                    0x00007f307035b962: callq  *%r10              ;*invokestatic nanoTime {reexecute=0 rethrow=0 return_oop=0}
                                                                  ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@34 (line 235)
                    0x00007f307035b965: mov    0x48(%rsp),%r10
                    0x00007f307035b96a: mov    %rbx,0x18(%r10)    ;*putfield measuredOps {reexecute=0 rethrow=0 return_oop=0}
                                                                  ; - com.openkappa.runtime.inc.generated.Increments_blackholedPost_jmhTest::blackholedPost_avgt_jmhStub@49 (line 237)
   ....................................................................................................
    41.26%  <total for region 2>
   
   ```


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org


[GitHub] [pinot] amrishlal commented on pull request #7442: ban prefix increment

Posted by GitBox <gi...@apache.org>.
amrishlal commented on pull request #7442:
URL: https://github.com/apache/pinot/pull/7442#issuecomment-934872313


   @richardstartin Pre and Post increment are fundamentally different in terms of their semantics and the difference in performance comes from the fact that post increment makes a copy while as pre-increment does not. A simple search would bring up many articles on this, but I am not seeing anything at all regarding banning postincrement operator within loops.
   
   The loops that you wrote are extremely simple, to the point where the semantic difference between pre and post increment operators doesn't matter. Hence, the same underlying compiled code. However, that still doesn't lead to the conclusion that preincrement should be banned. We shouldn't be banning operators that are fundamental to a language.
   


-- 
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: commits-unsubscribe@pinot.apache.org

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



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pinot.apache.org
For additional commands, e-mail: commits-help@pinot.apache.org