Skip to content

Instantly share code, notes, and snippets.

@khalidabuhakmeh
Created December 3, 2018 18:25
Show Gist options
  • Save khalidabuhakmeh/c15be93c15e54341b7fc0d82f0e0a6fd to your computer and use it in GitHub Desktop.
Save khalidabuhakmeh/c15be93c15e54341b7fc0d82f0e0a6fd to your computer and use it in GitHub Desktop.
Profiler Workshop

Profiling Workshop

I would imagine a Profiling Workshop, specifically around DotTrace and DotMemory would cover the following topics in the following order:

Introduction

When building a performant .NET Application, what parts of your application contribute to the overall experience.

  1. Explain Garbage Collection
  2. CPU utilization
  3. Threads
  4. Memory Utilization and Allocation
  5. I/O Dependencies (Network/SQL/etc.)

DotTrace

Walkthrough of the UI and attaching to various different types of .NET Applications: .NET Console, WPF, and ASP.NET.

  1. Optimizing a .NET Console application
  2. Optimizing a WPF Application
  3. 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.

DotMemory

Walkthrough of the UI and attaching to various different types of .NET Applications: .NET Console, WPF, and ASP.NET.

  1. Optimizing a .NET Console application
  2. Optimizing a WPF Application
  3. 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.

Optimize Your Code

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.

  1. Profile Code
  2. Make a Goal with the Instructor
  3. Try to achieve the goal

Conclusion

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:

  1. Speed
  2. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment