Hi,

after opening #21394 I thought I ran some benchmarks again on a project with a large amount of configuration properties. We've used https://github.com/martinvisser/config-properties-example in the past for this.

When doing so, I get the following results:

RC1 Snapshot
5.218 5.639
5.737 5.917
5.417 5.696
5.439 5.739
5.111 5.786
5.133 5.854
5.134 5.677
5.335 6.680
5.227 6.011
5.250 5.778
Mean 5.300 5.878
Range 0.626 1.041

As you can see, the latest snapshot is about half a second slower than RC1. I'm not quite sure yet if this can be only traced back to the new hashCode calculation that was introduced in #20625, so I thought I better open an issue to investigate.

Cheers, Christoph

Comment From: dreis2211

After #21394 was merged I see roughly the same numbers, so it didn't really improve things.

Comment From: dreis2211

Further investigation shows the following differences between RC1 and current snapshot builds: springboot Performance regression between RC1 and latest snapshots with large amount of configuration properties This seems to be related to https://github.com/spring-projects/spring-boot/commit/b4963d2463188153a9dd2e34af6b48dc5b47be51 or the work done in #20625 or a combination of both. But I can't pinpoint it, yet.

Comment From: philwebb

Thanks for spotting this.

Comment From: philwebb

@dreis2211 I've pushed something that I think will make a difference. Could you try your sample app again and see if things have improved?

Comment From: dreis2211

@philwebb We're good. It's even better than in 2.2.7 now. Thanks a lot.

RC1 Snapshot
5.641 4.242
6.445 4.123
5.592 4.270
6.138 4.537
5.471 4.185
5.846 4.149
6.517 4.206
6.522 4.198
5.442 4.187
5.664 4.164
Mean 5.928 4.226
Range 1.080 0.414
2.3.0 2.2.7
4.314 5.196
4.016 5.895
4.195 6.808
4.117 6.681
4.229 6.490
4.102 6.702
4.080 6.766
4.025 6.771
4.084 6.563
4.082 6.223
Mean 4.124 6.409
Range 0.298 1.612

Comment From: mbhave

@dreis2211 Out of curiosity, did you do a local build to get the latest snapshot? Asking because I don't think repo.spring.io has this change yet due to a failed build.

Comment From: dreis2211

I did, @mbhave

Comment From: mbhave

thanks for confirming!