簡體   English   中英

C ++計算時間間隔

[英]C++ calculating time intervals

我想計算程序中發生的某些事件之間的時間間隔(以1秒的1/10為單位)。 因此,我將clock功能用於這些需求,如下所示:

    clock_t begin;
    clock_t now;
    clock_t diff;

    begin = clock();

    while ( 1 )
    {
        now = clock();
        diff = now - begin;
        cout << diff / CLOCKS_PER_SEC << "\n";
        //usleep ( 1000000 );
    };

我期望程序打印0 1秒,然后1 1秒,則2 1秒。 依此類推...實際上,它打印0約8秒,然后打印1約8秒,依此類推...

順便說一句,如果我添加usleep以使程序每秒僅打印1次,那么它一路只打印0

非常感謝您的幫助!

clock()函數返回程序收取的CPU時間。 當您在usleep()調用中被阻止時,無需花費任何時間,這很清楚為什么您的時間似乎從未增加。 至於為什么您似乎要花8秒才能充電一秒鍾-系統中發生了其他事情,這雖然消耗了CPU時間,但是您必須共享處理器。 clock()不能用於衡量實時時間的流逝。

我敢打賭,您的打印內容太多了,以至於舊打印內容被緩沖了。 緩沖區正在增長,並且控制台的輸出跟不上您的緊密循環。 通過添加睡眠,您可以讓緩沖區有一些時間刷新並趕上。 因此,即使它進入程序的時間為8秒,您的打印內容還是8秒鍾前。

我建議將實際時間戳記放入print語句中。 查看時間戳是否與實際時間明顯滯后。

如果您可以使用boost,請檢查Boost Timers庫。

也許您必須將其轉換為兩倍。

cout << (double)(diff / CLOCKS_PER_SEC) << "\n";

整數取整,在您的情況下可能取整為0。

了解有關time()函數的信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM