You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
In 5ec3e3a, I used a new @(_ResolvedUserMonoAndroidAssemblies) item
group to improve incremental build performance. Targets that only need
to perform work with MonoAndroid assemblies, can be skipped unless a MonoAndroid assembly changes.
We can use this same technique with the linker for builds with LinkMode=None. The only steps in this case are:
if (options.LinkNone) {
pipeline.AppendStep (new FixAbstractMethodsStep ());
pipeline.AppendStep (new OutputStep ());
return pipeline;
}
FixAbstractMethodsStep only applies to MonoAndroid assemblies, so
we can use @(_ResolvedUserMonoAndroidAssemblies) to decide if _LinkAssembliesNoShrink can be skipped.
For an incremental build with a XAML change, this target was taking:
424 ms LinkAssemblies 1 calls
This was the Xamarin.Forms app in this repo. I would say this improves
incremental build times by about 400ms for small apps.
Context: 5ec3e3a
In 5ec3e3a, I used a new `@(_ResolvedUserMonoAndroidAssemblies)` item
group to improve incremental build performance. Targets that only need
to perform work with `MonoAndroid` assemblies, can be skipped unless a
`MonoAndroid` assembly changes.
We can use this same technique with the linker for builds with
`LinkMode=None`. The only steps in this case are:
if (options.LinkNone) {
pipeline.AppendStep (new FixAbstractMethodsStep ());
pipeline.AppendStep (new OutputStep ());
return pipeline;
}
`FixAbstractMethodsStep` only applies to `MonoAndroid` assemblies, so
we can use `@(_ResolvedUserMonoAndroidAssemblies)` to decide if
`_LinkAssembliesNoShrink` can be skipped.
For an incremental build with a XAML change, this target was taking:
424 ms LinkAssemblies 1 calls
This was the Xamarin.Forms app in this repo. I would say this improves
incremental build times by about 400ms for small apps.
After more thought (and looking at build logs), this change would break things.
<LinkAssemblies/> is what puts assemblies in obj\Debug\android\assets for the APK or Fast Deployment. If we skipped when only a NetStandard assembly changed--it wouldn't make it on-device.
Sign up for freeto subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Labels
None yet
2 participants
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Context: jonathanpeppers@5ec3e3a
In 5ec3e3a, I used a new
@(_ResolvedUserMonoAndroidAssemblies)
itemgroup to improve incremental build performance. Targets that only need
to perform work with
MonoAndroid
assemblies, can be skipped unless aMonoAndroid
assembly changes.We can use this same technique with the linker for builds with
LinkMode=None
. The only steps in this case are:FixAbstractMethodsStep
only applies toMonoAndroid
assemblies, sowe can use
@(_ResolvedUserMonoAndroidAssemblies)
to decide if_LinkAssembliesNoShrink
can be skipped.For an incremental build with a XAML change, this target was taking:
This was the Xamarin.Forms app in this repo. I would say this improves
incremental build times by about 400ms for small apps.