Как получить общее количество используемых операторов?

Мне нужно смоделировать задержку с помощью нескольких системных конфигураций (одноядерных, многоядерных, многоузловых на одном сервере, нескольких серверов) симулятора LTE. Кто-нибудь знает, как рассчитать объем вычислений исходного кода (или части всего кода, если я хочу)? Я думаю, что возможные подходы:

  1. Возьмите разницу в отметке времени в начале и в конце выполнения, используя clock()
  2. Общее количество операторов/инструкций в секунду (зависит от машины)
  3. Общее количество инструкций/инструкций в секунду

3-й - это более общая версия 2-го.

Симулятор находится в Matlab, и я могу использовать c (через файлы Mex).


person Ankur Gautam    schedule 03.06.2013    source источник
comment
stackoverflow .com/questions/12517133/   -  person Ankur Gautam    schedule 04.06.2013
comment
Этот вопрос был на Java. Не то же самое дело в c.   -  person MatthieuBizien    schedule 04.06.2013
comment
Бесплатно использовать C для перекомпиляции всего, что вы делаете в своем симуляторе Matlab? Или бесплатно использовать внешний C для определения 1, 2 и 3 для программы Matlab?   -  person horchler    schedule 04.06.2013
comment
@oao: Matlab скомпилирован JIT (и также опирается на некоторые Java), поэтому я думаю, что аспекты связанного связанного вопроса (если ответы верны) могут применяться.   -  person horchler    schedule 04.06.2013
comment
Хорошо, я не знал, что это JIT-компилятор в MATLAB.   -  person MatthieuBizien    schedule 04.06.2013
comment
@horchler да, в основном я могу использовать внешний c для доступа к файлам .m для поиска операторов (хотя это не кажется правильным подходом) .. также я могу вызвать некоторую функцию c из кода Matlab, который в дальнейшем может вызвать некоторую систему api, чтобы получить общее количество инструкций, выполненных на процессоре? или если я могу получить количество операторов, используемых одновременно во время сборки в симуляции Matlab.   -  person Ankur Gautam    schedule 04.06.2013


Ответы (1)


В Matlab есть очень простой способ сделать это. Используйте следующий код в файле скрипта:

tic;

operations...;

toc;

Это автоматически распечатывает время, прошедшее для набора используемых команд. Надеюсь это поможет

person Curtis Eugene Maddex    schedule 03.06.2013
comment
это файл .m, который нужно вызывать из кода Matlab? из вашего комментария следует, что этот код должен быть помещен в файл Matlab, количество операторов которого должно быть вычислено. Что, если файл далее вызывает другие сценарии или функции? - person Ankur Gautam; 04.06.2013
comment
вы можете поместить это только в свой файл .m, в котором уже есть все функции, скорость которых вы хотите проверить, нет необходимости создавать новую функцию для выполнения этого теста. - person Curtis Eugene Maddex; 04.06.2013
comment
Могу ли я выбрать эти переменные на экране команд Matlab и распечатать их в файле? так как они мне понадобятся для построения некоторых кривых - person Ankur Gautam; 04.06.2013
comment
да. если вы скажете a = toc; затем a получает значение прошедшего времени из tic; - person Curtis Eugene Maddex; 04.06.2013
comment
большое спасибо :) я проверил это, и это сработало для меня.. но я могу получить реальное время, прошедшее во время выполнения кода, только с помощью tic и toc.. что, если я хочу знать общее количество инструкций, выполненных на ядрах ? я знаю, что оба являются мерой одного и того же, но все же .. надеюсь, вы поняли мою точку зрения :) - person Ankur Gautam; 05.06.2013
comment
хм, я вижу, о чем вы сейчас спрашиваете, и tic;toc; отвечает, как рассчитать задержку, используя ваш первый подход. Но если вы знаете скорость вашего процессора и время, затраченное на ваши операции, то вы должны быть в состоянии рассчитать количество выполненных операций. - person Curtis Eugene Maddex; 05.06.2013
comment
stackoverflow.com/ questions/17055877/ не могли бы вы взглянуть на этот вопрос и предложить любую другую идею? - person Ankur Gautam; 15.06.2013