Вы можете использовать различные инструменты из SysInternals Utilities (сейчас это продукт Microsoft, см. http://technet.microsoft.com/en-us/sysinternals/bb545027), чтобы дать основную идею перед тем, как приступить к работе. В вашем случае проводник процессов (procxp) и монитор процессов (procmon) выполняют достойную работу.Они могут быть использованы для того, чтобы дать вам базовое представление о том, какой тип медлительности перед выполнением детализации профилирования.
Затем вы можете использовать xperf http://msdn.microsoft.com/en-us/performance/default для детализации. При правильной настройкеэтот инструмент может привести вас к точной функции, которая вызывает медлительность, без внедрения кода профилирования в вашу существующую программу. Уже есть видео с PDC, рассказывающее о том, как его использовать http://www.microsoftpdc.com/2009/CL16, и я настоятельно рекомендую этот инструмент. По собственному опыту,всегда лучше наблюдать сначала при использовании procxp / procmon, а затем нацеливать подозреваемых с помощью xperf, потому что xperf может генерировать огромную загрузку информации, если не отфильтрован с умом.
В некоторых трудных случаях, связанных с блокировками, ОтладкаИнструменты для Windows (windbg) будут очень удобныи есть специальные книги, рассказывающие о его использовании.В этих книгах обычно говорится об обнаружении зависания, и здесь можно использовать несколько методов для определения медлительности.(например, беглец)