Skip to content

Developers can detect performance bottlenecks within their iOS and Android applications #46375

Closed
@steveisok

Description

@steveisok

As an Android/IOS App developer I want to profile a running application, so that I can detect performance bottlenecks within my application.

Description
A common profiling task regularly performed by developers is analyzing application CPU performance. Looking at the tutorials for dotnet diagnostics, there is a full tutorial related to analyzing CPU performance, Debug high CPU usage - .NET Core. Developers will normally start out monitoring CPU performance using a tool like dotnet-counters using System.Runtime cpu-usage counter to detect usage or pattern causing CPU spikes. When a scenario is identified that would need closer investigation, dotnet-trace can be used together with the sample profiler, collecting a trace file of samples that can be loaded and analyzed in tools like PerfView.

  • Developer can start tracing session using dotnet-counters towards application running on device.
  • Developer can monitor CPU usage every second for a running application on device.
  • Developer can start dotnet-trace against running application and collect samples (using sample profiler) when high CPU load occurs.
  • Developer can terminate dotnet-trace terminating tracing session but keep application running on device.
  • Developer can load generated nettrace file into PerfView and analyzing performance characteristics of application, pinpointing callstacks consuming most CPU during session.
  • Developer can relaunch dotnet-trace and run a new tracing session on same device for same running application.
  • Developer can terminate application running on device while running a dotnet-trace tracing session resulting in controlled shutdown of dotnet-trace tool.
  • Developer can temporary loose network communication between device/application and dotnet-trace. Error should be detected by both ends and be handled in a controlled manner. Optimal, resume tracing session when connectivity is re-established (might result in lost events). Acceptable, possible to setup a new tracing session using a new tool instance without any need to restart application.
  • Developer can have both dotnet-counters and dotnet-trace running at the same time against the same application running on device.

Metadata

Metadata

Assignees

Labels

Priority:2Work that is important, but not critical for the releaseUser StoryA single user-facing feature. Can be grouped under an epic.area-Tracing-monoos-androidos-iosApple iOS

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions