Я полагаю, что некоторые из вас были дезинформированы о некоторых вещах.
В современных терминах тактовая частота представляет собой указание скорости, а не фактический показатель скорости, поэтому нет разумного способа оценить, сколько времени может занять одна инструкция.
Ваш вопрос основан на предположении, что все инструкции одинаковы - они, безусловно, не совпадают, некоторые инструкции ЦП интерпретируются как последовательности микроинструкций на некоторых архитектурах, а на других время может меняться.
Кроме того, нельзя с уверенностью предположить, что на современных архитектурах повторяющиеся инструкции будут выполняться одинаково, это зависит от кэшей данных и инструкций, конвейеров и прогнозирования ветвлений.
РазрешениеgetTimeOfDay не настолько точен, чтобы оценить продолжительность времени, необходимого для измерения отдельных инструкций, даже счетчиков тактов ЦП (TSC на x86) недостаточно.
Кроме того, ваша операционная система является основным источником ошибок при оценке таких таймингов, переключение контекста, управление питанием, загрузка машины и прерывания оказывают огромное влияние.Но даже в настоящей жесткой операционной системе реального времени (QNX или VxWorks) такие измерения по-прежнему сложны и требуют времени и инструментов, а также опыта для интерпретации результатов.В операционной системе общего назначения (Windows или базовый Linux) у вас практически нет надежды на получение точных измерений)
Затраты на вычисления и ошибки чтения и сохранения количества циклов ЦП также, как правило,Карликовое время, необходимое для одной инструкции.Как минимум, я предлагаю вам рассмотреть возможность объединения нескольких сотен или тысяч инструкций вместе.
На детерминированных архитектурах (1 цикл = 1 инструкция) без кэшей, таких как микросхема PIC, вы можете делать именно то, что вы предлагаете, используятактовый множитель, но даже для проверки ваших измерений вам, вероятно, потребуется логический анализатор (т. е. вам нужно сделать это аппаратно).
Короче говоря, это чрезвычайно сложная проблема.