2017-05-07 9 views
1

Ich habe eine Schleife, die ca. 3 Minuten für die erste Iteration und um 1 ms für den Rest 99.Profilierungs eine Schleife in Visual Studio

getrennt nimmt Ich versuche, herauszufinden, ob es einen Weg zu bekommen Profiling Daten für jede Schleife und wie es geht.

Ich bin sehr neu zu Profiling, so dass ich etwas offensichtliche hier fehlen könnte.

Ich sollte beachten, dass ich weiß, wo meine Engpässe sind. 2 meiner Funktionen benötigen fast 99,9% der Laufzeit. Ich versuche herauszufinden, ob es alles in der ersten Schleife ist (also wahrscheinlich ein Zuordnungsproblem) oder sich über die Ausführung des Skripts ausbreitet.

Ich bin auf Windows 10 mit Visual Studio 15 (und es integrierte Profiler)

+0

Haben Sie [diese Seite zum Aktivieren der zeilenweisen Profilerstellung] (https://msdn.microsoft.com/en-us/library/bb385757.aspx) und [dies beim Anzeigen der Ergebnisse] gelesen (https://msdn.microsoft.com/en-us/library/ms182372.aspx)? Es scheint, dass alle Daten, die Sie benötigen, leicht zugänglich sind. Mit was genau hast du ein Problem? (Und [das ermöglicht Ihnen, gleichzeitig durchzutreten und zu profilieren] (https://www.hanselman.com/blog/HistoricalDebuggingProfilingNewDiagnosticToolsInVisualStudio2015.aspx).) –

+0

Vielen Dank für die Links. Ich weiß, welcher Teil des Codes langsam ist. Ich versuche herauszufinden, ob die Verlangsamung auf einen Berechnungsfehler einer merkwürdigen Speicherzuweisung zurückzuführen ist, damit ich es beheben kann. – dsat

+0

Der Compiler muss im Freigabemodus sein, damit der Code, den ich erwähnt habe, funktioniert (ich habe vergessen, das früher zu erwähnen.) – AppWriter

Antwort

1
LARGE_INTEGER StartingTime, EndingTime, ElapsedMicroseconds; 
QueryPerformanceCounter(&StartingTime); 

//code to be profiled 

QueryPerformanceCounter(&EndingTime); 
ElapsedMicroseconds.QuadPart = EndingTime.QuadPart - StartingTime.QuadPart; 

int result[numLoops] 
result[0] = ElapsedMicroseconds.QuadPart; 

//use result in conjunction with a print function 

Der Compiler im Release-Modus sein muss, damit diese (zumindest in Visual Studio) zu arbeiten.

+0

Ich bekomme "Keine Zielarchitektur" -Fehler, wenn ich versuche zu kompilieren. Der Teil, der den Fehler auslöst, ist dieser '#elif! Definiert (RC_INVOKED)' Vielleicht sollte ich erwähnt haben, es ist eine Konsolenanwendung (eine Algorithmusimplementierung). – dsat

+1

Falls jemand anderes dies sieht, müssen Sie '#include #include ' hinzufügen, damit dieser Code kompiliert wird. – dsat

Verwandte Themen