我有一组布尔值,每个布尔值代表一个数字。我使用for循环打印每个true
:for(unsigned long long l = 0; l<numt; l++) if(primes[l]) cout << l << endl;
numt
是数组的大小,等于超过1000000.控制台窗口需要30秒才能打印出来价值,但我在我的程序中的计时器说37ms。如何等待所有值在我的程序中在屏幕上完成打印,以便我可以在我的时间中包含该值。
答案 0 :(得分:1)
试试这个:
#include <windows.h>
...
int main() {
//init code
double startTime = GetTickCount();
//your loop
double timeNeededinSec = (GetTickCount() - startTime) / 1000.0;
}
答案 1 :(得分:1)
只是为了防御ctime,导致它得到与GetTickCount相同的结果:
#include <ctime>
int main()
{
...
clock_t start = clock();
...
clock_t end = clock();
double timeNeededinSec = static_cast<double>(end - start) / CLOCKS_PER_SEC;
...
}
更新
而 time()的那个,但在这种情况下,我们可能会失去一些精度(约1秒),因为结果是秒。
#include <ctime>
int main()
{
time_t start;
time_t end;
...
time(&start);
...
time(&end);
int timeNeededinSec = static_cast<int>(end-start);
}
在简单示例中组合它们将显示结果的差异。在我的测试中,我看到了点之后的差异。