Измерьте время, затраченное программой - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть .exe программы, созданной на C ++.

Есть ли какой-нибудь простой фрагмент, который я мог бы просто вставить, чтобы узнать время, затраченное программой. У меня есть код на C ++, но я не хочу его сильно подправлять.

Ответы [ 3 ]

2 голосов
/ 24 февраля 2012

Читать о Boost.Timers . Пример кода для измерения времени будет:

#include <boost/timer/timer.hpp>

boost::timer t0;
// do smth
std::cout<<"elapsed: "<< t0.elapsed() << " s\n";
0 голосов
/ 24 февраля 2012

В Unix вам просто нужно поставить префикс исполняемой команды на «time», и если у вас случайно установлен Cygwin , то именно это я и предлагаю использовать. В противном случае проверьте Счетчики производительности , который является источником данных о производительности процесса на платформе MS. Должно быть возможно сделать трюк с болью одного дополнительного вызова метода перед выходом приложения.

0 голосов
/ 24 февраля 2012

Простой способ измерить время, затраченное какой-либо частью (или всей) вашей программы, - сделать снимок текущего времени в начале и затем вычесть его из текущего времени в конце.В Windows вы можете использовать для этого функцию GetTickCount.Я обычно оборачиваю это в небольшую вспомогательную структуру:

struct Duration {
  Duration( const char *name )
    : m_start( ::GetTickCount() ),
    m_name( name )
 { }

  ~Duration() {
    std::cout << m_name << " executed in " << ::GetTickCount() - start << "ms" << std::endl;
  }

  const DWORD m_start;
  const std::string m_name;
};

Вы можете использовать это так:

int main()
{
  Duration d( "Program" );

  // Heavy work being done here
}

Небольшая информация о времени выводится на stdout как Durationобъект уничтожен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...