5 Stimmen

Wie kann man die Leistung unabhängig von der verwendeten Maschine messen?

Ich hatte eine Routine, die gut funktionierte. Ich musste jedoch eine Änderung vornehmen. Die Änderung verbesserte die Präzision der Übung, beeinträchtigte aber die Leistung.

Die Routine besteht aus vielen mathematischen Berechnungen und ist wahrscheinlich CPU-gebunden (ich muss das noch genauer testen, aber ich bin mir zu 99% sicher). Es ist in C++ geschrieben (Compiler ist Borland C++ 6).

Ich möchte jetzt die Leistung der Routine messen. Zuerst dachte ich daran, die Ausführungszeit zu messen, aber das ist meiner Meinung nach ein ziemlich fehlerhafter Ansatz, da viel mehr Dinge passieren könnten.

Ich bin damals auf dieses Thema gestoßen: Techniken zur Messung der Anwendungsleistung - Stack Overflow . Mir gefiel die Idee der Messung durch MFlops.

Mein Chef schlug vor, eine Art Messung nach CPU-Taktzyklen zu verwenden, damit die Tests maschinenunabhängig sind, aber ich denke, dieser Ansatz fällt in die MFlops-Tests.

Meiner Meinung nach ist die Messung beider Dinge (Ausführungszeit und MFlops) der richtige Weg, aber ich würde gerne von den Stackoverflow-Experten hören, was ihr denkt.

Wie kann man die Leistung einer Routine messen, die als CPU-Bindung bekannt ist?

1voto

mfawzymkh Punkte 3982

Sie können in Bezug auf die CPU-Hardware-Zähler messen, VTune Intel-Profile ist ziemlich gut in diesem Bereich. Es zeigt Ihnen detaillierte Informationen auf der Grundlage der CPU-Zähler (zurückgezogene Befehle, Cache-Fehlversuche, Verzweigungsfehler) und korreliert diese mit jeder Anweisung in Ihren Funktionen, so dass Sie eine ziemlich gute Vorstellung davon haben, was die meisten Kosten verursacht.

dies setzt voraus, dass Ihre Funktion nicht speichergebunden ist.

Merci

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X