Profiling basics
There's a variety of different ways an application can be profiled. Anything from branching and individual instructions, to usage of caches and patterns of data access can be tracked in a project. Since our game isn't exactly overflowing with complexity, however, we really only need to worry about time-based profiling.
There are three basic ways a profiler can gather information about an application:
- Sampling: This is a periodic application stack capture that yields relatively inaccurate results, yet has very little overhead.
- Event collection: This involves tapping into the compilation process and configuring it in such a way that allows certain information to be sent to the profiling DLLs. A higher amount of overhead with a higher precision.
- Instrumentation: This involves direct code injection into the application during run time that allows for the most precise results and has the highest level of overhead.
Any of these techniques can be utilized, depending on what...