检查conhost打印所需的时间

时间:2014-03-27 20:12:51

标签: c++ cout large-data

我有一组布尔值,每个布尔值代表一个数字。我使用for循环打印每个truefor(unsigned long long l = 0; l<numt; l++) if(primes[l]) cout << l << endl; numt是数组的大小,等于超过1000000.控制台窗口需要30秒才能打印出来价值,但我在我的程序中的计时器说37ms。如何等待所有值在我的程序中在屏幕上完成打印,以便我可以在我的时间中包含该值。

2 个答案:

答案 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);
}

在简单示例中组合它们将显示结果的差异。在我的测试中,我看到了点之后的差异。