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-unsubscr...@logging.apache.org

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


Reply via email to