2016-10-01 167 views
0

首先,讓我說,我昨天剛開始使用這個庫,所以我對它的理解還是比較基礎的。我試圖捕獲我正在創建的視覺處理程序的FPS,並使用chrono庫將其輸出到屏幕。在我的情況下,我需要將開始執行steady_clock之後所花費的時間花費在double(或其他一些數字typedef,我可以像對待一樣)。我查看了參考文檔,並嘗試使用duration_casttime_point_cast函數,但這兩個函數似乎都不是我正在尋找的。如何從steady_clock作爲原始數據類型返回已用時間(雙精度)

我的問題是;有沒有什麼辦法簡單地將時鐘當前狀態的數值以秒爲單位轉換爲原始數據類型?

任何幫助,將不勝感激。

回答

1

你可以使用duration::count函數來做到這一點。

例如,您可以以毫秒爲單位獲取持續時間,然後將the count除以1000.0以獲得秒數爲double

3

像這樣:

#include <chrono> 
#include <iostream> 
#include <thread> 

int main() 
{ 
    using namespace std::literals; 

    // measure time now 
    auto start = std::chrono::system_clock::now(); 

    // wait some time 
    std::this_thread::sleep_for(1s); 

    // measure time again 
    auto end = std::chrono::system_clock::now(); 

    // define a double-precision representation of seconds 
    using fsecs = std::chrono::duration<double, std::chrono::seconds::period>; 

    // convert from clock's duration type 
    auto as_fseconds = std::chrono::duration_cast<fsecs>(end - start); 

    // display as decimal seconds 
    std::cout << "duration was " << as_fseconds.count() << "s\n"; 
} 

輸出示例:

duration was 1.00006s 
+0

您還可以,如果你喜歡拖欠'duration'第二個參數的位置:'用秒=的std ::時辰::持續時間;'。 –

相關問題