Время выполнения в Qt Creator для C ++

0

Как изменить файл.pro в проекте C++, чтобы напечатать время выполнения конкретного кода? Я использую Qt Creator в качестве общей C++ IDE в Ubuntu 13.04.

В терминале я бы использовал

time ./a.out

Мой текущий файл.pro

TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt

SOURCES += main.cpp

QMAKE_CXXFLAGS += -std=c++0x
  • 2
    Как вы думаете, почему это должно быть сделано в профессиональном файле?
  • 0
    Я думал, что файл pro используется для ввода команд, которые мы хотим выполнить при компиляции кода. Прости за это.
Показать ещё 2 комментария
Теги:
qt-creator

2 ответа

3

Почему бы не попробовать QBENCHMARK? Как показано в приведенном ниже коде, вы можете вставить код, который вы хотите измерить, внутри макроса QBENCHMARK. Справка

class MyFirstBenchmark: public QObject
{
    Q_OBJECT
private slots:
    void myFirstBenchmark()
    {
        QString string1;
        QString string2;
        QBENCHMARK {
            string1.localeAwareCompare(string2);
        }
    }
};
  • 0
    Мой вопрос был задан ранее на stackoverflow.com/q/244646/2802439, и есть несколько комментариев относительно этого. Спасибо за ответ в любом случае.
  • 0
    Добро пожаловать.
0

Расходуя предыдущие ответы, вот макрос, который делает все для вас.

#include <QDebug>
#include <QElapsedTimer>
#define CONCAT_(x,y) x##y
#define CONCAT(x,y) CONCAT_(x,y)

#define CHECKTIME(x)  \
    QElapsedTimer CONCAT(sb_, __LINE__); \
    CONCAT(sb_, __LINE__).start(); \
    x \
    qDebug() << __FUNCTION__ << ":" << __LINE__ << " Elapsed time: " <<  CONCAT(sb_, __LINE__).elapsed() << " ms.";

И тогда вы можете просто использовать как:

CHECKTIME(
    // any code
    for (int i=0; i<1000; i++)
    {
       timeConsumingFunc();
    }
)

В вашем случае, если вы хотите выполнить все время выполнения программы, вы можете просто включить в нее весь контент main. Нужно быть осторожным в цикле событий, я полагаю.

вывод:

onSpeedChanged: 102 Истекшее время: 2 мс.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню