The Basics of Profiling

By Mathieu Ropert

What to do when a program is slower than what we’d like? Where to start when trying to improve throughput, latency or responsiveness?

In this beginner friendly session we will introduce the two big families of profilers (sampling and instrumentation) and two tools my team uses almost every day when working on games: Optick and vTune. Through a few concrete cases based on past experience we will study how to troubleshoot a performance problem using a profiler and how the code was improved.

We will illustrate a few classic cases such as inefficient algorithms, unsuitable data structures, I/O waits and bad concurrency. Finally we will shortly explain what micro-optimizations are and when they should be considered by looking at low level metrics such as cache misses and branch prediction.