Wie kann ich die Ausführungszeit einer Zeile Code in C++
in Windows
messen. Ich bin Einfügen von über 1,00,000 Aufzeichnungen boost::multi_index_container
wie folgt:Messen Sie die Ausführungszeit eines Funktionsaufrufs in C++
while(...) //read a single record from a csv file until EOF
{
...
while(...) // split the record into components based on delimiter
{
...
}
//insert into boost::multi_index_container
}
Ich brauche die Zeit zu finden, benötigt, um alle Datensätze einzufügen, aber ohne die Ausführungszeit von Schleifen. Das Starten eines timer
oder irgendetwas kurz vor der Einfügefunktion und das Berechnen der verstrichenen Zeit unmittelbar nach dem Funktionsaufruf ergibt 0 nanoseconds
als Ergebnis. Also kann ich die Zeit nicht berechnen, indem ich die einzelnen Zeiten zusammenfasse. Was ist die Lösung?
Im Prinzip könnten Sie es wie folgt angehen: 1. Messen Sie die Zeit einer leeren Schleife (aber stellen Sie sicher, dass es nicht weg optimiert ist). 2. Messen Sie die Zeit Ihrer Einfügeschleife. 3. Nimm den Unterschied. Teufel ist jedoch im Detail, wenn Sie messen möchten, sollten Sie den optimierten Code messen, nicht den Debug-Code. Und dann gibt es eine Chance, der Optimierer macht es schwieriger für Sie. Überprüfen Sie die Assembler-Ausgabe, um sicherzustellen, dass Sie messen, was Sie zu messen glauben. Da Sie nicht möchten, dass die Datei auch mal gelesen wird, könnten Sie einige zusätzliche Schritte und Unterschiede finden, um endlich das zu bekommen, was Sie brauchen. – BitTickler
Ich frage mich, warum Sie dieses Maß es brauchen? – K117
@pradyot: Ich möchte eine Lösung für Windows-System – Jackzz