1 - Добавьте в ваш код некоторую отладочную информацию (включая временные метки) и запустите ее вне отладчика
2 - снова запустить в отладчике
3 - повторите много раз, чтобы получить статистически достоверные данные.
4 - Сравнить.
Если существует значительное различие между средним временем выполнения автономного и отладочного процессов, то вы правы, подозревая ОС (или издержки отладчика самих хуков ...). Если нет разницы, то не парься.
Edit0: Очевидно, что отладочные сообщения имеют свои собственные издержки. Возможно, вы захотите оставить их в коде, даже если вы запускаете из отладчика. Таким образом, и автономный, и отладчик используют один и тот же код.
Edit1: я неправильно понял вопрос. Я думал, что вы обеспокоены тем, что во время отладки ОС может прерывать ваше приложение чаще, чем в обычном режиме выполнения. Если вы хотите узнать, сколько времени фактически потратило ваше приложение на работу, просто сравните время, затраченное на «CPU Time» в диспетчере задач.
Edit2: Сравните время, возвращаемое GetProcessTimes для вашего процесса, с фактическим временем выполнения. Разница - это время, потраченное процессором на кого-то другого.