Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use StandardCharsets.UTF_8 #7599

Merged
merged 1 commit into from Oct 20, 2021

Conversation

richardstartin
Copy link
Member

@richardstartin richardstartin commented Oct 19, 2021

Description

Modernise StringUtils - use StandardCharsets which is faster (I can demonstrate this if necessary).

For context, this same change has been made within the JDK for performance reasons:

The problem this code was working around is still present in the latest JDK8 builds but this is a tradeoff - optimise for JDK8 or optimise for JDK11+.

Upgrade Notes

Does this PR prevent a zero down-time upgrade? (Assume upgrade order: Controller, Broker, Server, Minion)

  • Yes (Please label as backward-incompat, and complete the section below on Release Notes)

Does this PR fix a zero-downtime upgrade introduced earlier?

  • Yes (Please label this as backward-incompat, 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 release-notes and complete the section on Release Notes)

Release Notes

Documentation

@codecov-commenter
Copy link

codecov-commenter commented Oct 19, 2021

Codecov Report

Merging #7599 (f2817d4) into master (4246e0f) will increase coverage by 0.06%.
The diff coverage is 100.00%.

Impacted file tree graph

@@             Coverage Diff              @@
##             master    #7599      +/-   ##
============================================
+ Coverage     71.56%   71.63%   +0.06%     
- Complexity     3881     3882       +1     
============================================
  Files          1559     1559              
  Lines         79053    79049       -4     
  Branches      11706    11706              
============================================
+ Hits          56575    56627      +52     
+ Misses        18669    18607      -62     
- Partials       3809     3815       +6     
Flag Coverage Δ
integration1 29.55% <0.00%> (+0.28%) ⬆️
integration2 27.89% <0.00%> (-0.03%) ⬇️
unittests1 68.58% <100.00%> (+<0.01%) ⬆️
unittests2 14.69% <0.00%> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files Coverage Δ
...n/java/org/apache/pinot/spi/utils/StringUtils.java 100.00% <100.00%> (+57.14%) ⬆️
...core/query/executor/ServerQueryExecutorV1Impl.java 82.32% <0.00%> (-4.98%) ⬇️
...pinot/core/query/request/context/TimerContext.java 91.66% <0.00%> (-4.17%) ⬇️
.../java/org/apache/pinot/spi/data/TimeFieldSpec.java 88.63% <0.00%> (-2.28%) ⬇️
...not/broker/broker/helix/ClusterChangeMediator.java 78.02% <0.00%> (-2.20%) ⬇️
...core/startree/operator/StarTreeFilterOperator.java 86.52% <0.00%> (-2.13%) ⬇️
...ation/function/MinMaxRangeAggregationFunction.java 87.50% <0.00%> (-1.25%) ⬇️
.../helix/core/realtime/SegmentCompletionManager.java 72.00% <0.00%> (-1.02%) ⬇️
.../controller/helix/core/SegmentDeletionManager.java 75.60% <0.00%> (-0.82%) ⬇️
...lix/core/minion/PinotHelixTaskResourceManager.java 44.18% <0.00%> (-0.78%) ⬇️
... and 19 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 4246e0f...f2817d4. Read the comment docs.

@mcvsubbu
Copy link
Contributor

I had found this to result in more garbage before.

#3073

@richardstartin
Copy link
Member Author

I had found this to result in more garbage before.

#3073

@mcvsubbu this is only an issue on JDK8; this part of the JDK was mostly reimplemented since then. Please see the linked JDK PRs.

@mcvsubbu
Copy link
Contributor

I have not read the entire JDK PRs, but it talks only about speed. Our problem (at the time) was specifically GC overhead in realtime when segments were being built. The result was query performance suffered.

Can you make any memory usage comparisons across these two?

@richardstartin
Copy link
Member Author

I have some data from last time I went through this particular exercise - let me clean it up to demonstrate this is beneficial for anyone using JDK9+ (later this week)

@richardstartin
Copy link
Member Author

richardstartin commented Oct 19, 2021

This benchmark demonstrates the improvement on JDK11 and also that the implementation was sensible on JDK8. It uses 4 different character types, to generate all 4 possible lengths of UTF8 sequence:

@State(Scope.Benchmark)
public class DecodingBenchmark {

  @Param({"1", "10", "100", "1000"})
  int length;

  @Param({"a", "ß", "道", "\uD841\uDF0E"})
  String unit;

  private String data;

  @Setup(Level.Trial)
  public void setup() {
    StringBuilder sb = new StringBuilder(length * unit.length());
    for (int i = 0; i < length; i++) {
      sb.append(unit);
    }
    this.data = sb.toString();
  }

  @Benchmark
  public byte[] decodeUTF8Charset() {
    return data.getBytes(StandardCharsets.UTF_8);
  }

  @Benchmark
  public byte[] decodeUTF8CharsetName() {
    try {
      return data.getBytes("UTF-8");
    } catch (UnsupportedEncodingException e) {
      throw new RuntimeException(e);
    }
  }
}

JDK11: pay attention to both the avgt (better even for quite long strings) and the normalised allocation rate (always the same)

Benchmark                                                             (length)  (unit)  Mode  Cnt      Score      Error   Units
DecodingBenchmark.decodeUTF8Charset                                          1       a  avgt    5     12.690 ±    0.290   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                      1       a  avgt    5     24.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                          1       ß  avgt    5     19.147 ±    0.128   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                      1       ß  avgt    5     24.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                          1       道  avgt    5     15.301 ±    0.047   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                      1       道  avgt    5     24.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                          1      𠜎  avgt    5     30.449 ±    0.280   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                      1      𠜎  avgt    5     48.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                         10       a  avgt    5     13.916 ±    0.212   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                     10       a  avgt    5     32.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                         10       ß  avgt    5     27.862 ±    0.246   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                     10       ß  avgt    5     40.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                         10       道  avgt    5     54.348 ±    1.026   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                     10       道  avgt    5     48.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                         10      𠜎  avgt    5     87.956 ±    0.600   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                     10      𠜎  avgt    5    136.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                        100       a  avgt    5     17.833 ±    0.228   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                    100       a  avgt    5    120.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                        100       ß  avgt    5    162.337 ±    0.883   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                    100       ß  avgt    5    216.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                        100       道  avgt    5    441.978 ±    2.089   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                    100       道  avgt    5    320.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                        100      𠜎  avgt    5    654.704 ±    2.691   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                    100      𠜎  avgt    5   1032.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                       1000       a  avgt    5    143.401 ±    2.833   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                   1000       a  avgt    5   1016.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                       1000       ß  avgt    5   1953.952 ±   18.583   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                   1000       ß  avgt    5   2016.001 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                       1000       道  avgt    5   4340.205 ±  168.275   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                   1000       道  avgt    5   3016.002 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                       1000      𠜎  avgt    5   6668.428 ±   71.027   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                   1000      𠜎  avgt    5  10032.003 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                      1       a  avgt    5     35.770 ±    0.594   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                  1       a  avgt    5     24.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                      1       ß  avgt    5     34.974 ±    0.464   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                  1       ß  avgt    5     24.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                      1       道  avgt    5     34.873 ±    0.927   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                  1       道  avgt    5     24.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                      1      𠜎  avgt    5     49.799 ±    2.304   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                  1      𠜎  avgt    5     48.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                     10       a  avgt    5     38.018 ±    0.273   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                 10       a  avgt    5     32.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                     10       ß  avgt    5     51.948 ±    0.146   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                 10       ß  avgt    5     40.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                     10       道  avgt    5     72.474 ±    0.840   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                 10       道  avgt    5     48.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                     10      𠜎  avgt    5    107.176 ±    0.275   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                 10      𠜎  avgt    5    136.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                    100       a  avgt    5     39.540 ±    0.426   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                100       a  avgt    5    120.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                    100       ß  avgt    5    184.251 ±    1.008   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                100       ß  avgt    5    216.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                    100       道  avgt    5    457.615 ±    0.749   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                100       道  avgt    5    320.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                    100      𠜎  avgt    5    672.385 ±   17.598   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                100      𠜎  avgt    5   1032.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                   1000       a  avgt    5    142.672 ±    2.752   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm               1000       a  avgt    5   1016.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                   1000       ß  avgt    5   1600.567 ±    7.064   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm               1000       ß  avgt    5   2016.001 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                   1000       道  avgt    5   4388.180 ±   48.504   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm               1000       道  avgt    5   3016.002 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                   1000      𠜎  avgt    5   6663.150 ±   60.651   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm               1000      𠜎  avgt    5  10032.003 ±    0.001    B/op

Just compare any pair with the same parameters. E.g. for a 100 char ASCII string, there is no extra allocation but the time is halved:

DecodingBenchmark.decodeUTF8Charset                                        100       a  avgt    5     17.833 ±    0.228   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                    100       a  avgt    5    120.000 ±    0.001    B/op

DecodingBenchmark.decodeUTF8CharsetName                                    100       a  avgt    5     39.540 ±    0.426   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                100       a  avgt    5    120.000 ±    0.001    B/op

On JDK8, the avgt is much higher but more is allocated when using StandardCharsets

Benchmark                                                                 (length)  (unit)  Mode  Cnt      Score      Error   Units
DecodingBenchmark.decodeUTF8Charset                                              1       a  avgt    5     58.534 ±    0.758   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                          1       a  avgt    5    152.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                              1       ß  avgt    5     65.887 ±    1.033   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                          1       ß  avgt    5    152.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                              1       道  avgt    5     57.018 ±    1.035   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                          1       道  avgt    5    128.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                              1      𠜎  avgt    5     77.302 ±    2.559   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                          1      𠜎  avgt    5    176.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                             10       a  avgt    5     65.488 ±    0.488   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                         10       a  avgt    5    184.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                             10       ß  avgt    5     85.795 ±    1.593   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                         10       ß  avgt    5    192.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                             10       道  avgt    5     84.273 ±    1.305   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                         10       道  avgt    5    152.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                             10      𠜎  avgt    5    137.654 ±    1.435   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                         10      𠜎  avgt    5    264.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                            100       a  avgt    5    136.765 ±    2.063   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                        100       a  avgt    5    544.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                            100       ß  avgt    5    289.917 ±    4.506   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                        100       ß  avgt    5    640.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                            100       道  avgt    5    371.064 ±    1.888   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                        100       道  avgt    5    424.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                            100      𠜎  avgt    5    812.540 ±   13.020   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                        100      𠜎  avgt    5   1160.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                           1000       a  avgt    5   1067.417 ±   24.818   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                       1000       a  avgt    5   4136.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                           1000       ß  avgt    5   2618.408 ±   38.177   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                       1000       ß  avgt    5   5136.001 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                           1000       道  avgt    5   3433.173 ±   32.028   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                       1000       道  avgt    5   3120.002 ±    0.001    B/op
DecodingBenchmark.decodeUTF8Charset                                           1000      𠜎  avgt    5   7883.986 ±   79.200   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                       1000      𠜎  avgt    5  10160.003 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                          1       a  avgt    5     55.946 ±    0.497   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                      1       a  avgt    5     48.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                          1       ß  avgt    5     61.014 ±    2.516   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                      1       ß  avgt    5     48.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                          1       道  avgt    5     56.231 ±    0.289   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                      1       道  avgt    5     24.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                          1      𠜎  avgt    5     74.309 ±    1.246   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                      1      𠜎  avgt    5     48.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                         10       a  avgt    5     61.794 ±    0.312   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                     10       a  avgt    5     80.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                         10       ß  avgt    5     84.202 ±    0.701   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                     10       ß  avgt    5     88.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                         10       道  avgt    5     84.276 ±    0.999   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                     10       道  avgt    5     48.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                         10      𠜎  avgt    5    133.305 ±    1.293   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                     10      𠜎  avgt    5    136.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                        100       a  avgt    5    133.185 ±    2.087   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                    100       a  avgt    5    440.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                        100       ß  avgt    5    248.623 ±    3.828   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                    100       ß  avgt    5    536.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                        100       道  avgt    5    372.915 ±   14.813   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                    100       道  avgt    5    320.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                        100      𠜎  avgt    5    820.216 ±   82.970   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                    100      𠜎  avgt    5   1032.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                       1000       a  avgt    5   1066.354 ±   83.986   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                   1000       a  avgt    5   4032.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                       1000       ß  avgt    5   2700.836 ±  190.698   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                   1000       ß  avgt    5   5032.001 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                       1000       道  avgt    5   3466.882 ±  288.632   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                   1000       道  avgt    5   3016.002 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                       1000      𠜎  avgt    5   7986.518 ±  359.135   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                   1000      𠜎  avgt    5  10032.003 ±    0.001    B/op

For the same 100 char ASCII string mentioned above, the user would be better off upgrading their JVM than relying on this optimisation:

JDK11

DecodingBenchmark.decodeUTF8Charset                                        100       a  avgt    5     17.833 ±    0.228   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                    100       a  avgt    5    120.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                    100       a  avgt    5     39.540 ±    0.426   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                100       a  avgt    5    120.000 ±    0.001    B/op

JDK8

DecodingBenchmark.decodeUTF8Charset                                            100       a  avgt    5    136.765 ±    2.063   ns/op
DecodingBenchmark.decodeUTF8Charset:·gc.alloc.rate.norm                        100       a  avgt    5    544.000 ±    0.001    B/op
DecodingBenchmark.decodeUTF8CharsetName                                        100       a  avgt    5    133.185 ±    2.087   ns/op
DecodingBenchmark.decodeUTF8CharsetName:·gc.alloc.rate.norm                    100       a  avgt    5    440.000 ±    0.001    B/op

@richardstartin
Copy link
Member Author

@Jackie-Jiang would you mind rerunning the tests (and taking a look)?

Copy link
Contributor

@Jackie-Jiang Jackie-Jiang left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Please rebase it to the latest master to trigger the CI rerun because we just merged the fix for the integration test

@richardstartin
Copy link
Member Author

The tests really do need a rerun this time

@mcvsubbu
Copy link
Contributor

@richardstartin thanks for the diligence and detailed benchmark results.

@Jackie-Jiang Jackie-Jiang merged commit 0e49e74 into apache:master Oct 20, 2021
@richardstartin richardstartin mentioned this pull request Oct 21, 2021
3 tasks
kriti-sc pushed a commit to kriti-sc/incubator-pinot that referenced this pull request Dec 12, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

5 participants