google / google/protobuf-gradle-plugin

Make the generation and/or execution of the extractIncludedProto task smarter

Open
#125 0 comments 3 reactions 0 assignees View on GitHub
performance enhancement
Dominant language
Groovy
Stars
1.8k
Forks
288
PR merge metrics
No merged PRs in 30d

Description

I have a large, multi-project gradle build with the follow scenarios:

project1: Has protos to generate, but no dependencies that include protobuf files
project2: Has protos to generate, and a dependency on project1/external dependency that includes protos, but project proto's don't include any in project1 (no external protos)
project3: Has protos to generate, and a dependency on project1/external dependency, and project protos do include files from project1 (external protos).

Our project includes all three of these scenarios in some variation or another. The sum of the extractIncluded proto tasks takes some 15%-20% of our build time. Because the files are not in a single dependency, we can't use the Gradle task cache the results of the extractIncluded tasks.

We are using Gradle 3.5, with the task cache, parallel and parallel.intra enabled.

Contributor guide

Open the contributing guide

Research direction

Start by examining the extractIncluded proto tasks and how they behave across the three project scenarios described, using the Gradle 3.5 build configuration as the entry point. Measure their contribution to build time and determine when extraction is unnecessary or safely cacheable; done means preserving required external proto handling while reducing redundant task work.

Written by the indexing model from the issue text.

Assessment

Tech stack
groovy
Domain
build-system, performance
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.