2016-06-28 21 views
0

私は数週間前にプロジェクトを実行していますが、タイミングと処理速度とメモリを利用しているウィンドウが表示されていましたが、同じツールで同じコードを実行していますその画面を私に見せる。私は、Visual Studio 2010と2015の両方のバージョンで同じコードを試していますが、その画面が表示されています。ここ処理とタイミングを示すウィンドウが表示されない

はコード

#ifdef __GNUC__ 
#include <time.h> 
float getticks() 
{ 
    struct timespec ts; 

    if (clock_gettime(CLOCK_MONOTONIC, &ts) < 0) 
     return -1.0f; 

    return ts.tv_sec + 1e-9f*ts.tv_nsec; 
} 
#else 
#include <windows.h> 
float getticks() 
{ 
    static double freq = -1.0; 
    LARGE_INTEGER lint; 

    if (freq < 0.0) 
    { 
     if (!QueryPerformanceFrequency(&lint)) 
      return -1.0f; 

     freq = lint.QuadPart; 
    } 

    if (!QueryPerformanceCounter(&lint)) 
     return -1.0f; 

    return (float)(lint.QuadPart/freq); 
} 
#endif 

おかげで

答えて

0

ようなfloatにキャストしないでくださいです。 floatは4バイトのみですが、QuadPartは処理できません。また、あなたがやろうとしているかに応じて、GetTickCount64(それは約1ミリ秒の精度でランダムなカウンターだ)、GetSystemTimeGetSystemTimeAsFileTime ...ありunsigned long longまたはlong long

LARGE_INTEGER freq; 
QueryPerformanceFrequency(&freq); 

LARGE_INTEGER t1; 
QueryPerformanceCounter(&t1); 

//sleep for about 1 second 
Sleep(1000); 

LARGE_INTEGER t2; 
QueryPerformanceCounter(&t2); 

long long diff = t2.QuadPart - t1.QuadPart; 

//print the result with varying accuracy: 
cout << "seconds: "  << 1   * diff/freq.QuadPart << endl; 
cout << "milliseconds: " << 1000  * diff/freq.QuadPart << endl; 
cout << "microseconds: " << 1000000 * diff/freq.QuadPart << endl; 
cout << "nanoseconds: " << 1000000000 * diff/freq.QuadPart << endl; 

代わりに使用します。

関連する問題