kassava
kassava copied to clipboard
Little performance improvement
Hi @jamesbassett
Here is my little performance improvement.
I did several benchmarks and the results are (more or less):
- hashCode - 27%
- toString - 13%
- equals - some times something like 1% so it's basically the same
My benchmarks to get this numbers (please review if I did the calculus correctly 😅)
#
# CURRENT VERSION
#
# Run complete. Total time: 00:50:11
Benchmark Mode Cnt Score Error Units
EqualsBenchmark.apacheEquals avgt 5 3.308 ± 0.025 ns/op
EqualsBenchmark.apacheReflectionEquals avgt 5 468.797 ± 6.000 ns/op
EqualsBenchmark.kassavaEquals avgt 5 65.873 ± 0.180 ns/op
EqualsBenchmark.kassavaEqualsWithArrayCreation avgt 5 68.474 ± 0.695 ns/op
EqualsBenchmark.manualEquals avgt 5 3.717 ± 0.046 ns/op
EqualsBenchmark.manualObjectsEquals avgt 5 4.041 ± 0.055 ns/op
HashCodeBenchmark.apacheHashCode avgt 5 4.228 ± 0.124 ns/op
HashCodeBenchmark.apacheReflectionHashCode avgt 5 357.881 ± 4.408 ns/op
HashCodeBenchmark.guavaHashCode avgt 5 18.931 ± 0.131 ns/op
HashCodeBenchmark.kassavaHashCode avgt 5 48.910 ± 1.288 ns/op
HashCodeBenchmark.kassavaHashCodeWithArrayCreation avgt 5 50.653 ± 0.539 ns/op
HashCodeBenchmark.manualHashCode avgt 5 3.242 ± 0.028 ns/op
HashCodeBenchmark.manualObjectsHashCode avgt 5 18.053 ± 0.305 ns/op
ToStringBenchmark.apacheReflectionToString avgt 5 829.341 ± 6.808 ns/op
ToStringBenchmark.apacheToString avgt 5 453.315 ± 7.458 ns/op
ToStringBenchmark.guavaToString avgt 5 132.879 ± 1.757 ns/op
ToStringBenchmark.kassavaToString avgt 5 156.238 ± 5.518 ns/op
ToStringBenchmark.kassavaToStringWithArrayCreation avgt 5 157.057 ± 1.303 ns/op
ToStringBenchmark.manualObjectsToString avgt 5 65.010 ± 0.803 ns/op
ToStringBenchmark.manualToString avgt 5 57.267 ± 0.520 ns/op
#
# NEW VERSION
#
# Run complete. Total time: 00:50:10
Benchmark Mode Cnt Score Error Units
EqualsBenchmark.apacheEquals avgt 5 3.366 ± 0.085 ns/op
EqualsBenchmark.apacheReflectionEquals avgt 5 402.675 ± 3.926 ns/op
EqualsBenchmark.kassavaEquals avgt 5 65.736 ± 2.350 ns/op
EqualsBenchmark.kassavaEqualsWithArrayCreation avgt 5 66.799 ± 1.101 ns/op
EqualsBenchmark.manualEquals avgt 5 3.958 ± 0.029 ns/op
EqualsBenchmark.manualObjectsEquals avgt 5 4.044 ± 0.059 ns/op
HashCodeBenchmark.apacheHashCode avgt 5 4.250 ± 0.078 ns/op
HashCodeBenchmark.apacheReflectionHashCode avgt 5 342.284 ± 4.132 ns/op
HashCodeBenchmark.guavaHashCode avgt 5 18.900 ± 0.488 ns/op
HashCodeBenchmark.kassavaHashCode avgt 5 35.518 ± 0.360 ns/op
HashCodeBenchmark.kassavaHashCodeWithArrayCreation avgt 5 38.481 ± 0.531 ns/op
HashCodeBenchmark.manualHashCode avgt 5 3.657 ± 0.030 ns/op
HashCodeBenchmark.manualObjectsHashCode avgt 5 18.480 ± 0.241 ns/op
ToStringBenchmark.apacheReflectionToString avgt 5 858.053 ± 8.194 ns/op
ToStringBenchmark.apacheToString avgt 5 469.023 ± 7.078 ns/op
ToStringBenchmark.guavaToString avgt 5 139.953 ± 1.442 ns/op
ToStringBenchmark.kassavaToString avgt 5 135.790 ± 2.457 ns/op
ToStringBenchmark.kassavaToStringWithArrayCreation avgt 5 138.782 ± 2.446 ns/op
ToStringBenchmark.manualObjectsToString avgt 5 65.615 ± 1.744 ns/op
ToStringBenchmark.manualToString avgt 5 57.693 ± 0.533 ns/op
Review the changes and tell me what do you think.
Thanks a lot!
Hi @jamesbassett,
Any news? What do you think?
Thanks!
Hi @jamesbassett , Have you seen something? Some suggestions?
Thanks a lot for your support.
Sorry mate i've been busy - I'll try and take a look when I can :wink:
I supposed it. In the entire world we are not in our best moment 😓 Really thanks a lot for your time and sorry for my "ping".