2012-04-10 2 views
0

Я написал простой код в ANSI C и теперь хотел бы выполнить некоторые измерения.Как рассчитать производительность кода ANSI C?

Я измерил время выполнения (используя clock() функция под ОС Windows и clock_gettime() под ОС Linux).

Теперь я хотел бы рассчитать, сколько IPSes (инструкции в секунду) выполняет мой процессор при запуске этого кода. (Да, я знаю, что MIPS является патетическим параметром, но даже это, я хочу рассчитать его)

Было бы также приятно видеть, сколько CPI (циклов на инструкцию) требуется для выполнения, например, добавление 3-х элементов и других операций, которые я выполняю. Google говорит, как рассчитать количество MIPS с помощью калькулятора, некоторые знания о моем процессоре (его тактовую частоту), простую математику и множество других параметров (например, CPI), но не говорит КАК их получить!

Я также не нашел функции C/C++, которая бы возвращала количество тактовых циклов, необходимых для выполнения, например. доступ к локальной переменной. Существует также проблема найти Справочное руководство от Intel/AMD для современного процессора, который будет иметь информацию о кодах операций и других.

Я вручную вычислил, что мой код ANSI C занимает 37 операций, но это операции ANSI C, а не инструкции ЦП.

+3

Вы посмотрели «Связанный» список справа? –

+0

Вы посмотрели на gprof? – Kevin

+0

@phresnel - многие из них относятся к процессору MIPS, который указывает, что OP упоминает Windows, я полагаю, что они не используются. Gzegorz - вы можете удалить тег MIPS –

ответ

0

Самый простой способ получения времени высокой точности на окнах PerformanceCounter см How to use QueryPerformanceCounter?
Тогда вам просто нужны некоторые функции, которые выполняют операции, которые вы заинтересованы в выборе времени. Вы должны быть немного осторожны с кешированием и т. Д., Поэтому выполните расчет несколько раз и посмотрите на распределение раз

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