You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@logging.apache.org by GitBox <gi...@apache.org> on 2021/08/05 15:17:14 UTC

[GitHub] [logging-log4j2] carterkozak commented on pull request #555: Improve worst-case NameAbbreviator performance

carterkozak commented on pull request #555:
URL: https://github.com/apache/logging-log4j2/pull/555#issuecomment-893543113


   ## Azul Zulu JDK 16.0.2, OpenJDK 64-Bit Server VM, 16.0.2+7
   
   ### This PR (as is, using `indexOf(String, int)`)
   
   _1_ (run numbers labeled to account for thermal/scaling issues on my system)
   ```
   Benchmark                                                                                                                                       (className)  Mode  Cnt    Score   Error  Units
   NamePatternConverterBenchmark.benchNamePatternConverter  org.bogus.hokus.pokus.org.bogus.hokus.pokus.org.bogus.hokus.pokus.RetroEncabulatorFactorySingleton  avgt    4  195.817 ± 7.506  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        org.bogus.hokus.pokus.Clazz1  avgt    4   74.693 ± 0.583  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        com.bogus.hokus.pokus.Clazz2  avgt    4   74.509 ± 2.908  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                      edu.bogus.hokus.pokus.a.Clazz3  avgt    4   90.755 ± 0.650  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                             de.bogus.hokus.b.Clazz4  avgt    4   78.861 ± 0.699  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                   jp.bogus.c.Clazz5  avgt    4   66.118 ± 2.626  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                         cn.d.Clazz6  avgt    4   49.765 ± 5.760  ns/op
   ```
   
   _4_
   
   ```
   Benchmark                                                                                                                                       (className)  Mode  Cnt    Score    Error  Units
   NamePatternConverterBenchmark.benchNamePatternConverter  org.bogus.hokus.pokus.org.bogus.hokus.pokus.org.bogus.hokus.pokus.RetroEncabulatorFactorySingleton  avgt    4  195.953 ± 13.193  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        org.bogus.hokus.pokus.Clazz1  avgt    4   74.750 ±  2.435  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        com.bogus.hokus.pokus.Clazz2  avgt    4   80.890 ± 29.628  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                      edu.bogus.hokus.pokus.a.Clazz3  avgt    4   92.087 ±  3.809  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                             de.bogus.hokus.b.Clazz4  avgt    4   79.318 ±  3.140  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                   jp.bogus.c.Clazz5  avgt    4   62.846 ±  1.945  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                         cn.d.Clazz6  avgt    4   48.112 ±  4.871  ns/op
   ```
   
   ### This PR, but using `indexOf(char, int)`
   
   _2_
   ```
   Benchmark                                                                                                                                       (className)  Mode  Cnt    Score    Error  Units
   NamePatternConverterBenchmark.benchNamePatternConverter  org.bogus.hokus.pokus.org.bogus.hokus.pokus.org.bogus.hokus.pokus.RetroEncabulatorFactorySingleton  avgt    4  179.839 ±  8.086  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        org.bogus.hokus.pokus.Clazz1  avgt    4   75.254 ± 11.107  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        com.bogus.hokus.pokus.Clazz2  avgt    4   74.735 ±  3.403  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                      edu.bogus.hokus.pokus.a.Clazz3  avgt    4   85.463 ±  1.292  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                             de.bogus.hokus.b.Clazz4  avgt    4   71.888 ±  3.801  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                   jp.bogus.c.Clazz5  avgt    4   59.703 ± 14.708  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                         cn.d.Clazz6  avgt    4   44.177 ±  1.026  ns/op
   ```
   
   _5_
   
   ```
   Benchmark                                                                                                                                       (className)  Mode  Cnt    Score    Error  Units
   NamePatternConverterBenchmark.benchNamePatternConverter  org.bogus.hokus.pokus.org.bogus.hokus.pokus.org.bogus.hokus.pokus.RetroEncabulatorFactorySingleton  avgt    4  178.932 ± 23.631  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        org.bogus.hokus.pokus.Clazz1  avgt    4   70.855 ±  1.261  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        com.bogus.hokus.pokus.Clazz2  avgt    4   71.347 ±  3.361  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                      edu.bogus.hokus.pokus.a.Clazz3  avgt    4   82.970 ±  0.842  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                             de.bogus.hokus.b.Clazz4  avgt    4   71.882 ±  3.248  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                   jp.bogus.c.Clazz5  avgt    4   58.917 ±  2.620  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                         cn.d.Clazz6  avgt    4   42.353 ±  0.672  ns/op
   ```
   
   ### Original implementation from `release-2.x`
   
   _3_
   ```
   Benchmark                                                                                                                                       (className)  Mode  Cnt    Score   Error  Units
   NamePatternConverterBenchmark.benchNamePatternConverter  org.bogus.hokus.pokus.org.bogus.hokus.pokus.org.bogus.hokus.pokus.RetroEncabulatorFactorySingleton  avgt    4  201.906 ± 2.327  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        org.bogus.hokus.pokus.Clazz1  avgt    4   73.014 ± 3.037  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        com.bogus.hokus.pokus.Clazz2  avgt    4   74.045 ± 2.914  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                      edu.bogus.hokus.pokus.a.Clazz3  avgt    4   89.466 ± 1.284  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                             de.bogus.hokus.b.Clazz4  avgt    4   69.703 ± 2.335  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                   jp.bogus.c.Clazz5  avgt    4   53.735 ± 0.696  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                         cn.d.Clazz6  avgt    4   39.654 ± 0.318  ns/op
   ```
   
   _6_
   ```
   Benchmark                                                                                                                                       (className)  Mode  Cnt    Score    Error  Units
   NamePatternConverterBenchmark.benchNamePatternConverter  org.bogus.hokus.pokus.org.bogus.hokus.pokus.org.bogus.hokus.pokus.RetroEncabulatorFactorySingleton  avgt    4  209.823 ± 13.330  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        org.bogus.hokus.pokus.Clazz1  avgt    4   73.479 ±  4.820  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                        com.bogus.hokus.pokus.Clazz2  avgt    4   77.332 ±  7.192  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                      edu.bogus.hokus.pokus.a.Clazz3  avgt    4   90.165 ±  4.701  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                             de.bogus.hokus.b.Clazz4  avgt    4   70.995 ±  2.363  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                   jp.bogus.c.Clazz5  avgt    4   53.924 ±  0.488  ns/op
   NamePatternConverterBenchmark.benchNamePatternConverter                                                                                         cn.d.Clazz6  avgt    4   39.785 ±  0.219  ns/op
   ```
   
   ## Conclusion
   
   @schlosna you are correct, jdk16 shows substantially better performance using `indexOf(char,int)`, the benchmark results align more closely with my original expectations as illustrated by the improvements abbreviating the longer `RetroEncabulatorFactorySingleton` class. The original implementation performs best on very short class names, but I think those are fast enough that it doesn't make much difference either way.


-- 
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: notifications-unsubscribe@logging.apache.org

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