2010-09-25 4 views
0

Я пишу программу, которая должна запускать набор исполняемых файлов и находить их время выполнения. Мой первый подход состоял в том, чтобы запустить процесс, запустить таймер и увидеть разницу между временем начала и моментом, когда процесс возвращает значение выхода.Точный тест под окнами

К сожалению, эта программа не будет работать на выделенной машине, поэтому многие другие процессы/потоки могут значительно изменить время выполнения.

Я хотел бы получить время в миллисекундах/часах, которые фактически были переданы процессу ОС. Я надеюсь, что окна хранят эту информацию где-то, но я не могу найти ничего полезного в msdn.

Конечно, одно решение состоит в том, чтобы запустить процесс несколько раз и вычислить время стрельбы, но я этого не сделаю.

Спасибо.

ответ

1

Вы можете ознакомиться с API GetProcessTimes.

+1

Вы имеете в виду GetProcessTimes. – ybungalobill

+0

Да, GetProcessTimes - это то, что я искал. – Klark

+0

Да .. обновлено соответственно. – Naveen

1

Возможно, «High-Performance Counter» может быть тем, что вы ищете.

Я использовал QueryPerformanceCounter/QueryPerformanceFrequency для синхронизации с высоким разрешением в таких вещах, как 3D-программирование, где функциональность запаса просто не сокращает его.

Вы также можете попробовать инструкцию RDTSC x86.

+0

Спасибо, но мне не нужно более высокое разрешение, мне просто нужно точное время (мс в порядке), которые были переданы процессу. – Klark

+0

@Klark: достаточно справедливо. Высокопроизводительные счетчики могут быть преобразованы в значения времени (для этого используется QueryPerformanceFrequency), но ответ Навеена намного проще и проще. –

Смежные вопросы