I would imagine a Profiling Workshop, specifically around DotTrace and DotMemory would cover the following topics in the following order:
When building a performant .NET Application, what parts of your application contribute to the overall experience.
- Explain Garbage Collection
- CPU utilization
- Threads
- Memory Utilization and Allocation
- I/O Dependencies (Network/SQL/etc.)
Walkthrough of the UI and attaching to various different types of .NET Applications: .NET Console, WPF, and ASP.NET.
- Optimizing a .NET Console application
- Optimizing a WPF Application
- Optimizing an ASP.NET Application
Each occasion would walk through optimizing an application, but be built in a game style. Where answers aren't presented to you immediately. It is the attendees task to solve these problems via discovery and hints.
Walkthrough of the UI and attaching to various different types of .NET Applications: .NET Console, WPF, and ASP.NET.
- Optimizing a .NET Console application
- Optimizing a WPF Application
- Optimizing an ASP.NET Application
Each occasion would walk through optimizing an application, but be built in a game style. Where answers aren't presented to you immediately. It is the attendees task to solve these problems via discovery and hints.
Developers would be encouraged to bring their code and profile it using the skills they've learned from the previous modules. This would be with the help of the instructor.
- Profile Code
- Make a Goal with the Instructor
- Try to achieve the goal
The final part of the workshop is a task to optimize a system. The system has various issues and the goal is to optimize a particular path so that it works within a particular set of guidelines:
- Speed
- Memory Allocations
To meet these goals you must use DotTrace and DotMemory to identify problem areas in the system and fix them appropriately. This final part can be done in a group and discussion is encouraged.