Измерение FPS и времени выполнения в C ++ и Matlab

Кто-нибудь знает, как измерить FPS или время выполнения для C ++ и для MATLAB? Я ищу правильный способ измерить это. Я хочу сделать простую программу (например, определение кромок в MATLAB или использование OpenCV с C ++) и хочу сравнить результирующую скорость обработки.

Некоторые алгоритмы вычисляют время в миллисекундах, а другие в микросекундах.

Я нашел несколько способов сделать это в C ++, например, используя time_t start а также time_t end (Время процессора по часам) и календарное время. Для MATLAB они используют tic а также toc рассчитать время.

Кроме того, для C ++ я также нашел этот метод: https://www.dropbox.com/s/nb33hc3wumcpxb2/Timer.PDF

Я хочу найти тот же метод для вычисления времени, который следует точной процедуре в C ++ и MATLAB.

0

Решение

Когда вы говорите «тот же метод», на самом деле есть только один способ сделать это — получить доступ к системным часам. Есть более чем один метод сделать это, но в конечном итоге они полагаются на то же самое. Кроме того, статья, на которую вы ссылались, основана на использовании Windows и Visual C, и поэтому она не будет применима к Mac OS или Linux. Поэтому я попытаюсь дать вам независимые от платформы методы для MATLAB и C ++. На любой платформе это даст вам время выполнения как можно лучше.

Вы можете использовать tic а также toc команды. Вы начинаете с tic команда, затем выполните обработку, затем вы закончите с t = toc, t Таким образом, будет содержать, сколько времени прошло между tic а также toc,

Вот быстрый пример:

tic;
for i = 1 : 100000
M = rand(100,100); %// Generate a 100 x 100 uniformly random matrix
t = toc;
fprintf('The amount of time that has elapsed is %f seconds\n', t);

Если вы хотите вычислить FPS, просто измерьте, сколько времени потребуется для выполнения алгоритма для один изображение / кадр, затем возьмите ответное. На этот раз будет сек / кадр и так, чтобы вычислить FPS, возьмите ответное.

Вы можете использовать ctime библиотека и использовать time(NULL) вызов. Это вернет время в секундах с начала эпохи (1 января 1970 года). Как и в примере с MATLAB, вот пример на C ++:

#include <ctime>

void func() {
using namespace std;

// Begin
int start = time(NULL);

// Put in processing code here

// End - time in seconds
int finish = time(NULL);

// Measure time elapsed
int time_elapsed = finish - start;
}

Чтобы вычислить FPS, просто следуйте тому, что я сделал для примера MATLAB.

Если вы хотите, чтобы микросекундная точность измеряла время в C ++, вы можете использовать clock() функция. Вы можете сделать что-то вроде этого:

#include <ctime>

void func() {
using namespace std;

// Begin
clock_t start = clock();

// Put in processing code here

// End - time in microseconds
clock_t finish = clock();

// Measure time elapsed
double time_elapsed = double(finish - start) / CLOCKS_PER_SEC;
}

Тем не менее clock() Функция будет измерять время процессора, а не фактическое истекшее время, поэтому вам нужно быть осторожным, если вы решите это сделать. Проверьте эту публикацию для более подробной информации: Легко измерить прошедшее время

0

Другие решения


По вопросам рекламы [email protected]