2017-12-02 7 views
0

Ich habe ein vorhandenes Projekt in Visual Studio mit einer Hauptdatei, die eine Funktionsdatei aufruft. Ich habe auch eine CodeTimer.cpp nach den Schritten aus dem Microsoft-Handbuch erstellt, und ich habe es mit den erforderlichen Kopfzeilen in das gleiche Verzeichnis wie meinen Code und meine Funktion.Wie verwende ich QueryPerformanceCounter, um die Leistung des vorhandenen Codes zu testen?

Das Problem ist, ich weiß nicht, wie Link ihnen. Die Lösung ist in Ordnung, alle drei Dateien sind fehlerfrei. Aber wenn ich STRG-F5 es, sehe ich nur die Ausgabe meiner Haupt, aus offensichtlichen Gründen (Ich habe den CodeTimer nicht mit dem Haupt verknüpft).

Das ist mein CodeTimer:

#include "stdafx.h" 
#include <tchar.h> 
#include <windows.h> 

using namespace System; 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    __int64 ctr1 = 0, ctr2 = 0, freq = 0; 
    int acc = 0, i = 0; 

    // Start timing the code. 
    if (QueryPerformanceCounter((LARGE_INTEGER *)&ctr1) != 0) 
    { 
     // Code segment is being timed. 
     for (i = 0; i<100; i++) acc++; 

     // Finish timing the code. 
     QueryPerformanceCounter((LARGE_INTEGER *)&ctr2); 

     Console::WriteLine("Start Value: {0}", ctr1.ToString()); 
     Console::WriteLine("End Value: {0}", ctr2.ToString()); 

     QueryPerformanceFrequency((LARGE_INTEGER *)&freq); 

     Console::WriteLine("QueryPerformanceFrequency : {0} per Seconds.", freq.ToString()); 
     Console::WriteLine("QueryPerformanceCounter minimum resolution: 1/{0} Seconds.", freq.ToString()); 
     Console::WriteLine("ctr2 - ctr1: {0} counts.", ((ctr2 - ctr1) * 1.0/1.0).ToString()); 
     Console::WriteLine("65536 Increments by 1 computation time: {0} seconds.", ((ctr2 - ctr1) * 1.0/freq).ToString()); 
    } 
    else 
    { 
     DWORD dwError = GetLastError(); 
     Console::WriteLine("Error value = {0}", dwError.ToString()); 
    } 

    // Make the console window wait. 
    Console::WriteLine(); 
    Console::Write("Press ENTER to finish."); 
    Console::Read(); 

    return 0; 
} 

Antwort

0

NVM es fixiert. Ich musste nur den Rumpf von _tmain() in die main() - Funktion unter meinem Code einfügen und die Datei CodeTimer.cpp vollständig durchlaufen lassen. Es war ein Netzwerkkonflikt (mehrere Hauptleitungen in einem Projekt, der Compiler gab automatisch den mit der höchsten Priorität im Projekt aus).

Verwandte Themen