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