You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@lucene.apache.org by "Jerome Prinet (Jira)" <ji...@apache.org> on 2021/10/26 10:36:00 UTC
[jira] [Commented] (LUCENE-10195) Gradle build speed improvement
[ https://issues.apache.org/jira/browse/LUCENE-10195?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17434249#comment-17434249 ]
Jerome Prinet commented on LUCENE-10195:
----------------------------------------
I mainly focussed on up-to-date checks and task caching, the most spectacular improvement happens when running a clean with a populated cache:
./gradlew clean build -Ptests.seed=deadbeef -Ptests.nightly=false -Ptests.neverUpToDate=false --scan
*Before changes*
[https://gradle.com/s/kxkbukaklyiz4]
1206 tasks executed in 40 projects *in 5m 39s, with 72 avoided tasks saving 16.359s*
*After changes*
[https://gradle.com/s/mfiwiheg4wxjq]
1206 tasks executed in 40 projects *in 26s, with 394 avoided tasks saving 30m 2.417s*
*Here is the detail of the changes:*
* Declare outputs in your tasks to benefit from up-to-date checks (_CollectJarInfos_)
* _validateSourcePatterns_ task should not take into account _.idea_, nor _.gradle_ files
* Annotate tasks Cacheable to benefit from cache (_EcjLint, ValidateSourcePatterns, RatTask, RenderJavadoc, checkBrokenLinks_)
* Use valid outputs rather than dummy ones (_EcjLint_)
* Do not use string representation for task inputs being collection of files or directories (_ie. resources, scriptResources_) as you can’t benefit from caching when relocating workspace to a different folder
* Minimize direct usage of system properties which are location or OS dependent, as they are part of the cache entry key
* Do not set location or OS related information in the _MANIFEST.MF (X-Build-OS)_
*Here some advices for future improvements:*
* Fixing _tests.seed_ obviously help to benefit from up-to-date check, I get the point about randomization, but this is a trade-off with expensive cost of resources
* Use the standard _Gradle wrapper_
* Setup local _gradle.properties_ in Gradle home folder rather than having an automatic generation from _gradle/generation/local-settings.gradle_
* Add to VCS gradle _.properties & Gradle wrapper_
* Do not override Gradle daemon TTL to 15mn, this is way to short
* Do not create / commit generated test files to src directory (_frenchArticles.txt, Top50KWiki.utf8, CambridgeMA.utf8, Latin-dont-break-on-hyphens.rbbi_)
=> _:lucene:analysis:common:compileTestJava_ is not cacheable due to overlapping outputs
> Gradle build speed improvement
> ------------------------------
>
> Key: LUCENE-10195
> URL: https://issues.apache.org/jira/browse/LUCENE-10195
> Project: Lucene - Core
> Issue Type: Improvement
> Reporter: Jerome Prinet
> Priority: Major
> Time Spent: 10m
> Remaining Estimate: 0h
>
> Increase Gradle build speed with help of Gradle built-in features, mostly cache and up-to-date checks
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@lucene.apache.org
For additional commands, e-mail: issues-help@lucene.apache.org