2012-12-25 68 views
6

特定の関数(繰り返し呼び出される)にかかる時間は、どのようにミリ秒単位で計算できますか?
私は考える:ミリ秒単位のMFC測定機能

、後
CTime::GetCurrentTM()、前
CTime::GetCurrentTM()そしてCTimeSpan diff = after - beforeに結果を挿入します。
最後に、この関数が費やした合計時間を知りたいので、すべてのdiffを合計するグローバルメンバーに格納します。

しかし、答えは秒単位で、ミリ秒単位ではありません。

答えて

6

MFCはC++です。

その場合は、clock()を使用してください。

#include <ctime> 

clock_t time1 = clock(); 
// do something heavy 
clock_t time2 = clock(); 
clock_t timediff = time2 - time1; 

float timediff_sec = ((float)timediff)/CLOCKS_PER_SEC; 

これは通常、ミリ秒の精度を与えます。

1

MFCを使用している場合は、WIN APIを使用するのが良い方法です。そして時間差を計算することだけを心配しているので、以下の関数はあなたに完全に合うかもしれません。

GetTickCount64() 

は、システム起動後に直接number of milli seconds that has elapsedを返します。

あなたは、長いお使いのシステムを維持するために少し速いバージョンを(49.7日より正確にはそれ以上)の予定がない場合 - それはタイムスタンプを格納するため、GetTickCount()機能

+0

システムの起動時に基づいているため、この方法には問題があります。コンピュータが非常にめったに再起動しない場合、カウンタがオーバーフローすることがあります。 – sergiol

0

のCOleDateTimeは、ミリ秒単位に基づいて、内部での作業にはよく知られていますそのm_dt変数にはDATE型であるため、意図した目的のために解決されています。

私は、それぞれの計算を行った後、あなたが

DATE now= (DATE) COleDateTime::GetCurrentTime(); 

にあなたの時間をベースとすることをお勧めすることができます。

関連する問題