【发布时间】:2016-12-15 10:09:48
【问题描述】:
我正在调用argon2 - Qt 中的内存密集型散列函数并测量其运行时间:
...
QTime start = QTime::currentTime();
// call hashing function
QTime finish = QTime::currentTime();
time = start.msecsTo(finish) / 1000.0;
...
在 argon2 库的测试用例中,时间是用另一种方式测量的:
...
clock_t start = clock();
// call hashing function
clock_t finish = clock();
time = ((double)finish - start) / CLOCKS_PER_SEC;
...
我完全按照他们在测试用例中调用的方式调用该函数。但我得到了两倍大的数字(慢两倍)。为什么?如何在 Qt 中测量函数运行时间? clock() 实际测量的是什么?
env:virtualBox、Ubuntu14.04 64bit、Qt5.2.1、Qt Creator 3.0.1。
【问题讨论】:
-
不知道这个“argon2”是什么,但它看起来不太合适......正确的方法是使用
QElapsedTimer,它使用起来很简单,并且尽可能准确你的平台。 -
@PsiX 已编辑。我想知道时间差异的原因
-
@Bobur 好的,那你为什么接受一个不能回答那个问题的答案?
-
@PsiX,一个建议我使用 QElapsedTimer,一个建议不要使用 clock()。两人都解释了他们的观点。现在我知道该怎么做了。我想接受这两个答案,但我不能。但我想知道你为什么要问这个?这有什么问题?
标签: c++ qt clock time-measurement qtime