Skip to content

Commit dc540b3

Browse files
committed
[ProfiledAOT] Introduce new profiler targets
1 parent 399a73c commit dc540b3

File tree

3 files changed

+95
-54
lines changed

3 files changed

+95
-54
lines changed
Lines changed: 2 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,4 @@
11
<Project>
2-
<PropertyGroup>
3-
<AndroidPackageFormat>apk</AndroidPackageFormat>
4-
<AndroidUseDefaultAotProfile>false</AndroidUseDefaultAotProfile>
5-
<MauiUseDefaultAotProfile>false</MauiUseDefaultAotProfile>
6-
</PropertyGroup>
7-
<ItemGroup>
8-
<Compile Include="$(MSBuildThisFileDirectory)CommonMethods.cs" />
9-
<AndroidAotProfile Include="custom.aprof" />
10-
<PackageReference Include="Mono.AotProfiler.Android" Version="7.0.0-preview1" />
11-
</ItemGroup>
12-
<PropertyGroup>
13-
<RecordDependsOn>
14-
Clean;
15-
_ClearSystemProperties;
16-
BuildAndStartAotProfiling;
17-
_Sleep;
18-
FinishAotProfiling;
19-
_StripAppMethods;
20-
_SaveMethodNames;
21-
</RecordDependsOn>
22-
</PropertyGroup>
23-
<Target Name="Record" DependsOnTargets="$(RecordDependsOn)">
24-
<Message Importance="High" Text="Success! See changes in: $(MSBuildThisFileDirectory)dotnet.aotprofile" />
25-
</Target>
26-
<Target Name="_ClearSystemProperties" DependsOnTargets="_ResolveMonoAndroidSdks">
27-
<!-- Clear debug.mono.log in case it was set -->
28-
<Exec Command="&quot;$(AdbToolPath)adb&quot; shell &quot;setprop debug.mono.log ''&quot;" />
29-
</Target>
30-
<Target Name="_Sleep">
31-
<Sleep Delay="5000" />
32-
</Target>
33-
<UsingTask TaskName="Sleep"
34-
TaskFactory="RoslynCodeTaskFactory"
35-
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
36-
<ParameterGroup>
37-
<Delay ParameterType="System.Int32" Required="true" />
38-
</ParameterGroup>
39-
<Task>
40-
<Using Namespace="System.IO" />
41-
<Code Type="Fragment" Language="cs">
42-
<![CDATA[
43-
System.Threading.Thread.Sleep(this.Delay);
44-
]]>
45-
</Code>
46-
</Task>
47-
</UsingTask>
48-
<Target Name="_StripAppMethods">
49-
<!-- This removes HelloAndroid.dll from the profile, as user's apps will have a different name -->
50-
<Exec Command="&quot;$(DotNetPreviewTool)&quot; &quot;$(AotProfileToolPath)&quot; -sd --filter-module=&quot;^(?!$(App)).+&quot; &quot;$(MSBuildProjectDirectory)/custom.aprof&quot; -o &quot;$(MSBuildThisFileDirectory)dotnet.aotprofile&quot;" />
51-
</Target>
52-
<Target Name="_SaveMethodNames">
53-
<!-- This saves all the method names to a text file, so we can see a diff over time -->
54-
<Exec Command="&quot;$(DotNetPreviewTool)&quot; &quot;$(AotProfileToolPath)&quot; -m &quot;$(MSBuildThisFileDirectory)dotnet.aotprofile&quot; > &quot;$(MSBuildThisFileDirectory)dotnet.aotprofile.txt&quot;" />
55-
</Target>
2+
<Import Project="$(MSBuildThisFileDirectory)old.profiler.targets" />
3+
<Import Project="$(MSBuildThisFileDirectory)new.profiler.targets" />
564
</Project>
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
<Project>
2+
<PropertyGroup>
3+
<_RecordDependsOnTargets>
4+
Clean;
5+
Build;
6+
Install;
7+
_ProfileApp;
8+
Uninstall;
9+
</_RecordDependsOnTargets>
10+
<_ProfileAppDependsOnTargets>
11+
_ResolveMonoAndroidSdks; <!-- _ResolveMonoAndroidSdks resolves AdbToolPath -->
12+
_SetupDiagnosticsTracingProperties;
13+
StartAndroidActivity;
14+
_StartTracing;
15+
StopAndroidPackage;
16+
</_ProfileAppDependsOnTargets>
17+
<StartProfilingScript>$(MSBuildThisFileDirectory)recordTrace.sh</StartProfilingScript>
18+
</PropertyGroup>
19+
20+
<Target Name="_SetupDiagnosticsTracingProperties">
21+
<Exec Command="$(AdbToolPath)adb reverse tcp:9000 tcp:9001" />
22+
<Exec Command="$(AdbToolPath)adb shell setprop debug.mono.log '127.0.0.1:9000,suspend,connect'" />
23+
</Target>
24+
25+
<Target Name="_StartTracing" DependsOnTargets="$(_ResolveAndroidTooling)">
26+
<PropertyGroup>
27+
<AndroidSdkRoot Condition="'$(AndroidSdkPath)' != ''">ANDROID_SDK_ROOT=$(AndroidSdkPath)</AndroidSdkRoot>
28+
</PropertyGroup>
29+
<Exec Command="$(StartProfilingScript) $(DotNetToolPath)" EnvironmentVariables="$(AndroidSdkRoot)" />
30+
</Target>
31+
32+
<Target Name="_ProfileApp" DependsOnTargets="$(_ProfileAppDependsOnTargets)" />
33+
34+
<Target Name="Record" DependsOnTargets="$(_RecordDependsOnTargets)">
35+
<Message Importance="High" Text="Success! See changes in: $(_MauiAOTProfileLocation)$(App).aotprofile" />
36+
</Target>
37+
</Project>
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
<Project>
2+
<PropertyGroup>
3+
<AndroidPackageFormat>apk</AndroidPackageFormat>
4+
<AndroidUseDefaultAotProfile>false</AndroidUseDefaultAotProfile>
5+
<MauiUseDefaultAotProfile>false</MauiUseDefaultAotProfile>
6+
</PropertyGroup>
7+
<ItemGroup>
8+
<Compile Include="$(MSBuildThisFileDirectory)CommonMethods.cs" />
9+
<AndroidAotProfile Include="custom.aprof" />
10+
<PackageReference Include="Mono.AotProfiler.Android" Version="7.0.0-preview1" />
11+
</ItemGroup>
12+
<PropertyGroup>
13+
<LegacyRecordDependsOn>
14+
Clean;
15+
_ClearSystemProperties;
16+
BuildAndStartAotProfiling;
17+
_Sleep;
18+
FinishAotProfiling;
19+
_StripAppMethods;
20+
_SaveMethodNames;
21+
</LegacyRecordDependsOn>
22+
</PropertyGroup>
23+
<Target Name="LegacyRecord" DependsOnTargets="$(LegacyRecordDependsOn)">
24+
<Message Importance="High" Text="Success! See changes in: $(MSBuildThisFileDirectory)dotnet.aotprofile" />
25+
</Target>
26+
<Target Name="_ClearSystemProperties" DependsOnTargets="_ResolveMonoAndroidSdks">
27+
<!-- Clear debug.mono.log in case it was set -->
28+
<Exec Command="&quot;$(AdbToolPath)adb&quot; shell &quot;setprop debug.mono.log ''&quot;" />
29+
</Target>
30+
<Target Name="_Sleep">
31+
<Sleep Delay="5000" />
32+
</Target>
33+
<UsingTask TaskName="Sleep"
34+
TaskFactory="RoslynCodeTaskFactory"
35+
AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
36+
<ParameterGroup>
37+
<Delay ParameterType="System.Int32" Required="true" />
38+
</ParameterGroup>
39+
<Task>
40+
<Using Namespace="System.IO" />
41+
<Code Type="Fragment" Language="cs">
42+
<![CDATA[
43+
System.Threading.Thread.Sleep(this.Delay);
44+
]]>
45+
</Code>
46+
</Task>
47+
</UsingTask>
48+
<Target Name="_StripAppMethods">
49+
<!-- This removes HelloAndroid.dll from the profile, as user's apps will have a different name -->
50+
<Exec Command="&quot;$(DotNetPreviewTool)&quot; &quot;$(AotProfileToolPath)&quot; -sd --filter-module=&quot;^(?!$(App)).+&quot; &quot;$(MSBuildProjectDirectory)/custom.aprof&quot; -o &quot;$(MSBuildThisFileDirectory)dotnet.aotprofile&quot;" />
51+
</Target>
52+
<Target Name="_SaveMethodNames">
53+
<!-- This saves all the method names to a text file, so we can see a diff over time -->
54+
<Exec Command="&quot;$(DotNetPreviewTool)&quot; &quot;$(AotProfileToolPath)&quot; -m &quot;$(MSBuildThisFileDirectory)dotnet.aotprofile&quot; > &quot;$(MSBuildThisFileDirectory)dotnet.aotprofile.txt&quot;" />
55+
</Target>
56+
</Project>

0 commit comments

Comments
 (0)