Кто-нибудь знает, как измерить 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.
Когда вы говорите «тот же метод», на самом деле есть только один способ сделать это — получить доступ к системным часам. Есть более чем один метод сделать это, но в конечном итоге они полагаются на то же самое. Кроме того, статья, на которую вы ссылались, основана на использовании 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()
Функция будет измерять время процессора, а не фактическое истекшее время, поэтому вам нужно быть осторожным, если вы решите это сделать. Проверьте эту публикацию для более подробной информации: Легко измерить прошедшее время