Turns out this change also has a nice effect on test execution. It varies from 
around 11% faster than 1.6 for the junit and testng performance test projects 
up to almost 50% for the verbose testng test project.

Anything that uses the worker process should pick up this improvement, which 
includes Groovy and Scala compilation. We don't have a performance test for 
this and I haven't measured this. Might be worth doing so.

The change also add 2-5% to the IDE import tasks.

With the dependency meta-data caching, the numbers for 1.7 are looking pretty 
good:

- Our canonical multi project build is about 5% faster than 1.6 for both clean 
and incremental build (20% faster than 1.0).
- The 'many dependencies' build is about 22% faster than 1.6 for both clean and 
incremental build (35% faster than 1.0).
- Eclipse import is about 25% faster than 1.6 for the multi project build and 
35% faster for the many dependencies build (slightly less relative to 1.0).
- IDEA import is about 38% faster than 1.6 for the multi project build and 52% 
faster for the many dependencies build (slightly less relative to 1.0).
- JUnit and TestNG execution is about 12% faster than 1.6 (18% and 14% faster 
than 1.0).
- Verbose JUnit and TestNG execution is about 38% and 50% faster than 1.6 (39% 
and 43% faster than 1.0).
- The dependency report for the many dependencies build is 63% faster than 1.6 
(51% faster than 1.0).
- Build script compilation is 77% faster than 1.6 (42% faster than 1.0).


On 17/05/2013, at 6:07 PM, 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.
> 
> 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

Reply via email to