Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Little performance improvement #8

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

alejandropg
Copy link

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
Copy link
Author

Hi @jamesbassett,

Any news? What do you think?

Thanks!

@alejandropg
Copy link
Author

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

Thanks a lot for your support.

@jamesbassett
Copy link
Contributor

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

@alejandropg
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants