kassava icon indicating copy to clipboard operation
kassava copied to clipboard

Little performance improvement

Open alejandropg opened this issue 4 years ago • 4 comments

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!

alejandropg avatar Jun 01 '20 13:06 alejandropg

Hi @jamesbassett,

Any news? What do you think?

Thanks!

alejandropg avatar Jun 08 '20 05:06 alejandropg

Hi @jamesbassett , Have you seen something? Some suggestions?

Thanks a lot for your support.

alejandropg avatar Jun 18 '20 06:06 alejandropg

Sorry mate i've been busy - I'll try and take a look when I can :wink:

jamesbassett avatar Jun 18 '20 06:06 jamesbassett

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".

alejandropg avatar Jun 18 '20 06:06 alejandropg