1. 程式人生 > 其它 >qDebug | std::cout | printf效能表現

qDebug | std::cout | printf效能表現

來自:Qt君

效能表現結論

  • 效能表現:printf > std::cout > qDebug
  • std::cout與printf資料基本一致;
  • qDebug相對於std::cout和printf差距過大,高頻呼叫有可能影響系統時延;
  • 效能均衡推薦選用std::cout;
  • 追求效能選用printf。

測試程式

#include <QElapsedTimer>
#include <iostream>

/* 注:單獨開啟某個巨集測試 */
//#define TEST1
//#define TEST2
//#define TEST3

int main(int argc, char *argv[])
{
#ifdef TEST1
    {
        QElapsedTimer t;
        qint64 it = 0;
        t.start();
        while (t.elapsed() < 1000) {
            qDebug() << "Test1";
            it++;
        }

        qDebug() << "Test1: " << it;
    }
#endif

#ifdef TEST2
    {
        QElapsedTimer t;
        qint64 it = 0;
        t.start();
        while (t.elapsed() < 1000) {
            std::cout << "Test2" << std::endl;
            it++;
        }

        std::cout << "Test2: " << it;
    }
#endif

#ifdef TEST3
    {
        QElapsedTimer t;
        qint64 it = 0;
        t.start();
        while (t.elapsed() < 1000) {
            printf("Test3\n");
            it++;
        }

        printf("Test3: %lld\n", it);
    }
#endif
	return 0
}```