Можно попробовать переключатель-q.
-q, - тихий Тихий вывод - только показывают ошибки
Windows QueryPerformanceCounter () имеет логику для определения количества процессоров и вызова логики синхронизации при необходимости. Он пытается использовать регистр TSC, но для многопроцессорных систем не гарантируется, что этот регистр будет синхронизироваться между процессорами (и, что более важно, он может сильно различаться из-за интеллектуального понижения частоты и состояний сна).
MSDN сообщает, что не имеет значения, на каком процессоре это вызвано, поэтому вы можете увидеть дополнительный код синхронизации для такой ситуации, вызывающей накладные расходы. Также помните, что он может вызывать передачу по шине, поэтому вы можете видеть задержки из-за конкуренции на шине.
Попробуйте использовать SetThreadAffinityMask (), если возможно, чтобы привязать его к определенному процессору. В противном случае вам, возможно, придется жить с задержкой или вы можете попробовать другой таймер (например, взгляните на http: // en.
Я давно не использовал так много, но если память обслуживает, нет ни одной реализации этой функции, так как внутренности предоставляются различными производителями оборудования.
Вот небольшая статья из MSDN: http://msdn.microsoft.com/ja-jp/library/cc399059.aspx
Кроме того, если вы запрашиваете производительность нескольких процессоров (в отличие от нескольких ядер на одном процессоре), он будет должны общаться через шину, которая работает медленнее и может быть там, где вы видите некоторые блокировки.
Однако, как я уже сказал, прошло довольно много времени.
Майк
У меня создалось впечатление, что на x86 QueryPerformanceCounter () просто вызывает rdtsc под прикрытием. Я удивлен, что у него есть замедление на многоядерных машинах (я никогда не замечал этого на моем 4-ядерном процессоре).