Несоответствие часов Tic-Toc & C от MATLAB

Я написал некоторый C-код, который я называю формой MATLAB после компиляции с использованием MEX. Внутри кода C я измеряю времячасть вычисления с использованием следующего кода:

clock_t begin, end;
double time_elapsed;
begin = clock();
/* do stuff... */
end = clock();
time_elapsed = (double) ((double) (end - begin) / (double) CLOCKS_PER_SEC);

Истекшее время должно быть временем выполнения в секундах.

Затем я вывести значениеtime_elapsed в MATLAB (он правильно экспортируется; я проверял). Затем на стороне MATLAB я вызываю эту функцию C (после компиляции с использованием MEX) и измеряю время ее выполнения, используяtic а такжеtoc, То, что оказывается полным абсурдом, так это то, что время, которое я вычисляю с использованием tic и toc, составляет 0,0011 с (в среднем на 500 прогонов, ст. Dev. 1,4e-4), а время, которое возвращается кодом C, составляет 0,037 с ( в среднем на 500 трасс, ст. дев. 0,0016).

Здесь можно заметить два очень странных факта:

Время выполнения для всей функции меньше, чем время выполнения для части кода. Следовательно, либо MATLAB 'с или с 'Измерения сильно неточны.Время выполнения, измеренное в C-коде, очень разбросано и показывает очень высокое значение. отклонение (коэффициент вариации 44%, по сравнению с 13% для тик-ток).

Что происходит с этими таймерами?

Ответы на вопрос(1)

Ваш ответ на вопрос