On 17/05/2013, at 6:19 PM, Luke Daley <luke.da...@gradle.biz> wrote:
> > > On 17/05/2013, at 9:07, Adam Murdoch <adam.murd...@gradleware.com> wrote: > >> >> The symptom is much slower script compilation in Gradle 1.6 relative to >> previous versions, so it particularly affects those people using a >> particular build for the first time or those who are authoring build scripts. >> >> The cause was 2 things in combination: a much larger number of packages in >> the default imports, now that we generate it, and some inefficiencies in how >> we find classes in the class loader graph, in particular when looking for >> classes that don't exist. These two things meant that the Groovy compiler >> was spending a lot of time resolving unqualified class names when compiling >> scripts. >> >> The solution is a bit of caching in key places in the class loader graph. >> >> Some numbers: For a build with 100 projects, average execution time for >> `gradle help --recompile-scripts` is >> >> Gradle 1.5 ~48sec >> Gradle 1.6 ~96sec >> Master ~24sec >> >> The fix also knocks about about 30-40 minutes off the CI commit builds. >> Nice. Yet to see what impact it has on the coverage builds. >> >> The daemon is also slightly faster for each build now, thanks to the caching. > > Do we have performance test coverage for this? Is it worth it? I think I'll add some coverage, as there are some important use cases that are affected by script compilation speed: first time use of a build, authoring build scripts, and upgrading Gradle versions. > >> >> On 14/05/2013, at 9:20 PM, Luke Daley <luke.da...@gradleware.com> wrote: >> >>> I think we have a problem. >>> >>> I've been seeing something like this too I think. >>> >>> What can we ask for short of access to the project? How can we see where >>> the time is being spent? >>> >>> Begin forwarded message: >>> >>>> From: Gradle <noreply.gra...@getsatisfaction.com> >>>> Subject: New problem: Performance degradation in initial Gradle invocation >>>> when usin... >>>> Date: 14 May 2013 12:15:18 PM GMT+01:00 >>>> To: luke.da...@gradleware.com >>>> >>>> Stefan Marklund just reported this problem in Gradle: >>>> >>>> Performance degradation in initial Gradle invocation when using 1.6 >>>> >>>> Hello All, >>>> >>>> After the other day having switched over to Gradle 1.6 from Gradle 1.5 I >>>> have noticed a significant performance decrease in the initial >>>> configuration step in Gradle 1.6 compared to the 1.5 version. With initial >>>> invocation of gradle I mean after having done a clean code checkout >>>> invoking Gradle for the very first time. >>>> >>>> See numbers below. Are you aware of any performance issue associated with >>>> the 1.6 version? >>>> >>>> I have not adjusted my build script for changes pending (for Gradle 2.0) >>>> so I do see some new deprication messages. >>>> >>>> My Gradle project is fairly large I'd imagine. It is a multiproject >>>> containing 198 subprojects. >>>> >>>> Performance numbers for an initial 'gradle tasks' >>>> >>>> >>>> Gradle 1.6: >>>> =========== >>>> Total time: 5 mins 25.951 secs >>>> Total time: 5 mins 47.84 secs >>>> Total time: 5 mins 32.74 secs >>>> Total time: 5 mins 7.843 secs (no daemon) >>>> Total time: 5 mins 31.888 secs (no daemon, profile) >>>> >>>> Profile: >>>> Description Duration >>>> Total Build Time 5m31.91s >>>> Startup 1.094s >>>> Settings and BuildSrc 3.249s >>>> Loading Projects 0.561s >>>> Configuring Projects 5m0.02s >>>> Task Execution 26.779s >>>> >>>> Dependency resolution 1.125s >>>> >>>> Gradle 1.5: >>>> =========== >>>> Total time: 2 mins 31.647 secs >>>> Total time: 2 mins 25.89 secs >>>> Total time: 2 mins 21.674 secs (no demon) >>>> Total time: 2 mins 28.045 secs >>>> Total time: 2 mins 48.135 secs (no-daemon, profile) >>>> >>>> Profile: >>>> Description Duration >>>> Total Build Time 2m48.16s >>>> Startup 1.060s >>>> Settings and BuildSrc 2.417s >>>> Loading Projects 0.573s >>>> Configuring Projects 2m17.26s >>>> Task Execution 26.138s >>>> >>>> Dependency resolution 1.164s >>>> >>>> >>>> >>>> Across the board the configuration time per subproject is about twice that >>>> of Gradle 1.5. The other items are virtually identical. >>>> I also supplied the dependency resolution times. >>>> >>>> Subsequent invocations of 'gradle tasks' are done in ~35s for both Gradle >>>> 1.5 and 1.6. >>>> >>>> I hope this aids you in your analysis. >>>> >>>> Thank you, >>>> Stefan Marklund >>>> Reply | Notify me when people reply >>>> >>>> This message sent from the Gradle community on Get Satisfaction. >>>> To unsubscribe or change your email settings, click here. >>>> >>>> >>>> ---------------- >>>> Create a customer community for your company at GetSatisfaction.com. >>>> >>> >>> -- >>> Luke Daley >>> Principal Engineer, Gradleware >>> http://gradleware.com >>> >>> Join me at the Gradle Summit 2013, June 13th and 14th in Santa Clara, CA: >>> http://www.gradlesummit.com >>> >> >> >> -- >> Adam Murdoch >> Gradle Co-founder >> http://www.gradle.org >> VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting >> http://www.gradleware.com >> >> Join us at the Gradle Summit 2013, June 13th and 14th in Santa Clara, CA: >> http://www.gradlesummit.com >> -- Adam Murdoch Gradle Co-founder http://www.gradle.org VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting http://www.gradleware.com Join us at the Gradle Summit 2013, June 13th and 14th in Santa Clara, CA: http://www.gradlesummit.com