在 Qt 中测试一个操作需要多少时间的最简单方法

Posted

技术标签:

【中文标题】在 Qt 中测试一个操作需要多少时间的最简单方法【英文标题】:Easiest way to test how much time an operation takes in Qt 【发布时间】:2013-07-27 14:36:13 【问题描述】:

我使用 Qt 4.8,并尝试跨平台(至少在 linux 和 mac 上)。

我需要在 gui 中可视化一个操作需要多少时间。我试过了:

QTime t;
t.start();
functionCall();
qDebug() << t.elapsed() << "ms";

但我读到它不可靠。一些替代品?

抱歉,没有 C++0x

【问题讨论】:

之前有人问过这个问题:***.com/questions/244646/qt-fast-way-to-measure-time 但是,接受且投票最多的答案是错误的。 Qt 没有提供获取 CPU 处理时间的方法。你可以试试&lt;ctime&gt;,但通常不是那么准确。请参阅我对该问题的回答:***.com/a/13003327/856199 您需要什么样的精度(即您要测量的东西大约持续多长时间)? (“不可靠”听起来很奇怪。可能不够准确,但这是另一个问题。) @Mat 这里的主要问题是 QTime 不测量代码消耗的 CPU 时间。即使您的代码根本没有运行,它也会测量实际的实时时间。 @NikosC.:OP 想要 CPU 时间而不是挂钟,这是问题中缺少的一个相当大的信息。 什么是最常用的menchmarking? cpu时间? 【参考方案1】:

这不可靠,也不是很准确。请改用QElapsedTimer。

当然,QTime 和 QElapsedTimer 都测量挂钟时间。您需要 QtTest 和 QBENCHMARK in order to get other measures(callgrind、CPU 滴答计数器等),另请参阅 QTest::setBenchmarkResult 函数。

【讨论】:

我认为QBENCHMARK 只能用于单元测试,我需要在应用程序中使用它 您可以在应用程序中使用任何QtTest 功能,只要您与QtTest 库链接即可。 小心QElapsedTimer。现在似乎有问题(Qt 5.6)——我可以使用objectName.start()objectName.elapsed(),但智能感知并没有弹出这些,只有静态成员。不过,它们确实有效。它似乎发生在定义文件中,而不是标题中。

以上是关于在 Qt 中测试一个操作需要多少时间的最简单方法的主要内容,如果未能解决你的问题,请参考以下文章

Qt - 在(从)文件中保存(或加载)qt 变量的最简单和最快的方法

Qt GUI 从另一个类访问 MainWindow 的最简单方法

菜鸟求助,请问QT使用哪个类可以画出那种静态文本框,就是实时显示我要显示的数据的,不需要有编辑功能。

在带有 Qt 5.6 的 Android 上使用 Google 地图的最简单方法是啥?

从场景中删除或隐藏 QEntity 的最简单方法

在nodejs中导入MySQL数据库进行集成测试的最简单方法