Ich möchte wissen, wie viel Zeit mein Programm in den Standardkopiekonstruktor einer bestimmten Klasse ausgibt. Gibt es eine Möglichkeit, den Kopierkonstruktor auf eine Weise zu implementieren, die identisch mit der Art und Weise ist, wie der Standardkopiekonstruktor vom Compiler implementiert wird, aber mit einem zusätzlichen Instrumentierungscode, der die aktuelle Zeit vor und nach dem Ausführen des Hauptteils überprüft der Konstruktor?Wie Sie die Leistung eines Standardkopiekonstruktors in C++ messen
-4
A
Antwort
0
Verwenden Sie gprof oder einen anderen Profiler. Sie können natürlich Ihre eigenen Timing-Schleifen schreiben, aber der C++ - Compiler kann sehr aggressiv optimieren, was die Sache schwierig macht. Ein richtiger Profiler wird Ihnen genau sagen, wo das Programm seine Zeit verbringt.
Verwandte Themen
- 1. Wie messen Sie Code-Leistung in .NET?
- 2. Messen Sie die Leistung der Java-Anwendung
- 3. Wie kann ich die Leistung einer HashTable in C# messen?
- 4. Messen Sie die Leistung eines gemeinsamen Lisp-Programms
- 5. Messen Sie die Ausführungszeit eines Funktionsaufrufs in C++
- 6. Wie Django-Cache-Leistung messen?
- 7. So messen Sie die Größe eines C# -Programms
- 8. Wie kann ich die Zeit eines Threads in C# messen?
- 9. Messen Sie die Leistung der Abfragen und Ausführungsfunktionen
- 10. So messen Sie die Besuchszeit eines Benutzers
- 11. Wie verwende ich einen Filter, um die Leistung zu messen?
- 12. Messen Sie die Länge eines SVG-Pfades?
- 13. Wie messen Sie die Gesprächszeit eines tel: // Links in Safari?
- 14. Messen Sie die Aussprechbarkeit eines Wortes?
- 15. Messen Sie die tatsächliche Ausführungszeit von std :: system in C++
- 16. wie die Leistung der externen Website zu messen
- 17. Wie messen Sie die Laufzeit in web.py?
- 18. Messen Sie die Pfadlänge in Blender Script?
- 19. Messen Sie Ausführungszeit in C++ OpenMP-Code
- 20. Wie messen Sie die Zeit zwischen den Tastenklicks? C#
- 21. Messen Sie die Breite eines attributedString in J2ME
- 22. C/C++ - Verschlüsselung: Datenrate messen
- 23. messen linq zu sql Leistung und Statistik
- 24. Messen Sie Leistung und Zeit von Python Webserver
- 25. Wie messen Sie die Java-Ausführungszeit?
- 26. Wie genau messen Sie die Zeichenbreite?
- 27. So messen Sie die Bandbreite in swift
- 28. Schreiben Sie die Leistung einer Datei C++
- 29. Messen von Netzwerkverkehr in C#
- 30. Wie kann ich die Ausführungszeit eines Threads messen?
Schreiben Sie Ihren eigenen Kopierkonstruktor und vergleichen Sie die Zeit, die mit dem Standard dauert. Aber wenn der Standard eine korrekte Kopie erstellt, kann ich nicht sehen, wie Ihre eigene Implementierung schneller sein könnte. –
Verwenden Sie in C++ 11 Delegierungskonstruktoren, in denen Sie einen benutzerdefinierten Konstruktor mit Instrumentierungslogik hinzufügen und an den normalen Kopierkonstruktor delegieren. Andernfalls lassen Sie den Compiler den Standardkopiekonstruktor normal generieren und verwenden Sie dann einen externen Profiler, der den Code dynamisch zur Laufzeit instrumentiert, anstatt Code für sie zu schreiben. –
Normalerweise würde ich erwarten, dass ein Profiler Ihnen Informationen über den erzeugten Kopierkonstruktor geben kann, es sei denn, der Kopierkonstruktor wird inline. Arbeiten Sie an einer Plattform, auf der ein traditioneller Profiler schwer zu bekommen ist? –