2017-02-07 3 views
0

私は2つの時間の差を確認する必要があるプロジェクトでは、ミリ秒上記のコードどのように私は2つの時間間隔の違いを得ることができますマイクロ秒とナノ秒のCを使用して+ +

QDateTime oStartTime = QDateTime::currentDateTime(); 

// some operetions   //the difference is in micro and nano seconds differ 

QDateTime oEndTime = QDateTime::currentDateTime(); 
quint64 elapsed = oStartTime.daysTo(oEndTime)*1000*60*60*24 + oStartTime.time().msecsTo(oEndTime.time()); 

私だけの時間差をミリ秒を与える:私は私のコードは

正確な時間差を取得するために、マイクロ・ナノ秒の時間差をつけたいです。私はまた、マイクロ&ナノ秒が必要です。どのようにマイクロ&ナノ秒で時間を得るための任意の提案?

+0

のstd ::クロノ、あなたが探しているものです。 [ここをクリックしてください](http://stackoverflow.com/questions/9089842/c-chrono-system-time-in-milliseconds-time-operations/31521226#31521226) – ban

+0

chronoは私のQT4.3.2を使用してサポートしていませんバージョンとVisual Studio 2005がコンパイルされるので、マイクロ秒とナノ秒を取得することが可能です –

+0

GetSystemTimeAsFileTime(LPFILETIME)を試してください。ここでFILETIME構造は100ナノ秒のタイムスタンプの数を表す64ビットの値を含みます。 – ban

答えて

0

QTは、システムの高解像度カウンタ(clock typesを参照)を使用して時間差を取得するためのQElapsedTimerを提供します。

+0

私のQTは4.3.2バージョンですので、QElapsedTimerをサポートしていませんので、マイクロ秒とナノ秒の時間差を得るための代替方法を教えてください。 –

+0

ネイティブタイマーを使用できます。 [このスレッド](http://stackoverflow.com/questions/5404277/porting-clock-gettime-to-windows)を参照してください。 – Youka

2

C++ 11は、時間とともに動作するライブラリchronoを提供します。時間間隔を計算するために特別に設計されたsteady_clockを持っています。また、デュレーションテンプレートクラスのマイクロ秒とナノ秒のインスタンス化もあります。

#include <chrono> // C++11 
#include <iostream> 

using namespace std::chrono; 

int main() 
{ 
    steady_clock::time_point tp1 = steady_clock::now(); 

    std::cout<<"some time to spend..."<<std::endl; 
    steady_clock::time_point tp2 = steady_clock::now(); 

    nanoseconds spent_time = duration_cast<nanoseconds>(tp2 - tp1); 
    std::cout<<"It took "<<spent_time.count()<<" nanoseconds."<<std::endl; 

    return 0; 
} 

標準出力:

some time to spend... 
It took 207960 nanoseconds. 
+0

このタイプのエラーを取得しています、それはクロノ 致命的なエラーC1083をサポートしていないようです:「クロノ」:そのようなファイルやディレクトリ –

+0

@SrikanthTogaraは 'chrono'にアクセスするには、あなたのcomplilerのためのC++ 11を有効にしないオープンファイルを含めることはできません。 – titapo

関連する問題