Я занимаюсь разработкой системы, которая состоит из трех основных компонентов программного обеспечения. Клиентское приложение, основное приложение и приложение обмена — все они работают на одном сервере. Сообщения принимаются в клиентском приложении, передаются в основное приложение, а затем пересылаются в соответствующее приложение обмена.
Я хотел бы измерить внутреннюю задержку сообщения в нашей системе, поэтому отметьте время сообщения, когда оно получено на клиенте, в ядре, и отметку времени, когда сообщение отправлено из модуля обмена.
Разумно ли использовать QueryPerformanceCounter () для определения времени событий в нескольких приложениях? Кажется, что счетчик не будет надежным для приложений, работающих на нескольких ядрах.
Как насчет добавления приложения обмена, которое открывает клиентское соединение, а затем рассылает одно сообщение с отметкой времени, скажем, 10000 раз. Задержки будут складываться, и тогда вы сможете эффективно использовать временную метку, рассчитать время начала и поделить на 10000.
Как указывает Чад, QueryPerformanceCounter отлично работает для этой цели. Из MSDN «В общем, результаты счетчика производительности [из QPC] являются одинаковыми для всех процессоров в многоядерных и многопроцессорных системах, даже если они измеряются в разных потоках или процессах.» Упоминается только пара исключений …