From 04be9dafe0811b38aa2f42f9362310c47156b439 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Fri, 31 Aug 2018 11:01:34 +0100 Subject: [PATCH 1/4] [Xamarin.Android.Build.Tasks] `_CreateAapt2VersionCache` slow due to wildcard usage Fixes #2121 There were a number of performace issues with `_CreateAapt2VersionCache`. First the wildcards were processing the ENTIRE `$(IntermediateOutputPath)`! What they should have been doing was targeting specific directories. I.e the root of `$(IntermediateOutputPath)` and the directories under `$(IntermediateOutputPath)\lp`. The target did not have a Condition to stop it running if the versions matched, so that has been added. However, even if a target is NOT run. MSbuild will still evaluate the `PropertyGroups` and `ItemGroups` within the targets. So we need to add `Conditon` on the `_CompiledFlataArchive` and `_CompiledFlataStamp` items as well. With these in place the time when this target is skipped is down to 1ms. --- .../Xamarin.Android.Common.targets | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index c435aca888a..28283894676 100755 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -784,18 +784,19 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. - <_CompiledFlataArchive Include="$(IntermediateOutputPath)\**\*.flata"/> - <_CompiledFlataStamp Include="$(IntermediateOutputPath)\**\compiled.stamp"/> + <_CompiledFlataArchive Include="$(IntermediateOutputPath)\lp\**\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'"/> + <_CompiledFlataArchive Include="$(IntermediateOutputPath)\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'"/> + <_CompiledFlataStamp Include="$(IntermediateOutputPath)\lp\**\compiled.stamp" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'"/> From 8a23194f46e66cf692055eb1bcecdf6955619aea Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Fri, 31 Aug 2018 11:07:25 +0100 Subject: [PATCH 2/4] Formatting fixes --- .../Xamarin.Android.Common.targets | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 28283894676..0426e64bd5e 100755 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -788,15 +788,15 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. > - <_CompiledFlataArchive Include="$(IntermediateOutputPath)\lp\**\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'"/> - <_CompiledFlataArchive Include="$(IntermediateOutputPath)\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'"/> - <_CompiledFlataStamp Include="$(IntermediateOutputPath)\lp\**\compiled.stamp" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'"/> + <_CompiledFlataArchive Include="$(IntermediateOutputPath)\lp\**\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> + <_CompiledFlataArchive Include="$(IntermediateOutputPath)\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> + <_CompiledFlataStamp Include="$(IntermediateOutputPath)\lp\**\compiled.stamp" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> From e66c879b3405398f2d1a442379969ee1bbeefff1 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Fri, 31 Aug 2018 14:23:23 +0100 Subject: [PATCH 3/4] Fixed up Paths --- .../Xamarin.Android.Common.targets | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 0426e64bd5e..18b634dbca8 100755 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -794,9 +794,9 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. Overwrite="true" /> - <_CompiledFlataArchive Include="$(IntermediateOutputPath)\lp\**\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> + <_CompiledFlataArchive Include="$(_AndroidLibrayProjectIntermediatePath)**\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> <_CompiledFlataArchive Include="$(IntermediateOutputPath)\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> - <_CompiledFlataStamp Include="$(IntermediateOutputPath)\lp\**\compiled.stamp" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> + <_CompiledFlataStamp Include="$(_AndroidLibrayProjectIntermediatePath)**\compiled.stamp" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> From 6a0aa32e7ead164e8efdf9d4321b173eced58301 Mon Sep 17 00:00:00 2001 From: Dean Ellis Date: Wed, 5 Sep 2018 12:04:04 +0100 Subject: [PATCH 4/4] Rework to put Condition on ItemGroup --- .../Xamarin.Android.Common.targets | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets index 18b634dbca8..b6cfe425fd4 100755 --- a/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets +++ b/src/Xamarin.Android.Build.Tasks/Xamarin.Android.Common.targets @@ -793,10 +793,10 @@ Copyright (C) 2011-2012 Xamarin. All rights reserved. Lines="$(_Aapt2Version)" Overwrite="true" /> - - <_CompiledFlataArchive Include="$(_AndroidLibrayProjectIntermediatePath)**\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> - <_CompiledFlataArchive Include="$(IntermediateOutputPath)\*.flata" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> - <_CompiledFlataStamp Include="$(_AndroidLibrayProjectIntermediatePath)**\compiled.stamp" Condition="'$(_Aapt2Version)' != '@(_Aapt2VersionCache)'" /> + + <_CompiledFlataArchive Include="$(_AndroidLibrayProjectIntermediatePath)**\*.flata" /> + <_CompiledFlataArchive Include="$(IntermediateOutputPath)\*.flata" /> + <_CompiledFlataStamp Include="$(_AndroidLibrayProjectIntermediatePath)**\compiled.stamp" />