Hauptinhalt

Messen der Leistung Ihres Codes

Übersicht über die Funktionen zur Leistungsmessung

Mit der Funktion timeit und den Stoppuhr-Funktionen tic und toc können Sie messen, wie lange die Ausführung Ihres Codes dauert. Verwenden Sie die Funktion timeit für eine genaue Messung der Funktionsausführungszeit. Verwenden Sie tic und toc, um die Zeit für kleinere Codeabschnitte zu schätzen, die keine vollständigen Funktionen darstellen.

Für weitere Informationen zur Leistung Ihres Codes, wie beispielsweise Informationen zu Funktionsaufrufen und Ausführungszeiten einzelner Codezeilen, verwenden Sie den MATLAB® Profiler. Weitere Informationen finden Sie unter Profile Your Code to Improve Performance.

Zeitfunktionen

Um die zur Ausführung einer Funktion benötigte Zeit zu messen, verwenden Sie die Funktion timeit. Die Funktion timeit ruft die angegebene Funktion mehrfach auf und gibt den Median der Messungen zurück. Sie nimmt einen Handle für die zu messende Funktion entgegen und gibt die typische Ausführungszeit in Sekunden zurück. Angenommen, Sie haben eine Funktion computeFunction definiert, die zwei Eingaben x und y akzeptiert, die in Ihrem Workspace definiert sind. Sie können die Zeit zur Ausführung der Funktion mit timeit berechnen.

f = @() myComputeFunction(x,y); % handle to function
timeit(f)

Zeitanteile des Codes

Um zu schätzen, wie lange die Ausführung eines Teils Ihres Programms dauert, oder um die Geschwindigkeit verschiedener Implementierungen von Teilen Ihres Programms zu vergleichen, verwenden Sie die Stoppuhr-Funktionen tic und toc. Durch Aufruf von tic wird der Timer gestartet, und das nächste toc liest die verstrichene Zeit.

tic
   % The program section to time. 
toc

In manchen Fällen laufen Programme zu schnell, als dass tic und toc nützliche Daten liefern könnten. Wenn Ihr Code schneller als 1/10 Sekunde ist, sollten Sie in Betracht ziehen, ihn in einer Schleife zu messen und dann den Durchschnitt zu bilden, um die Zeit für einen einzelnen Durchlauf zu ermitteln.

Die Funktion „cputime“ im Vergleich zu „tic/toc“ und „timeit“

Es wird empfohlen, timeit oder tic und toc zu verwenden, um die Leistung Ihres Codes zu messen. Diese Funktionen geben die Echtzeit zurück. Im Gegensatz zu tic und toc ruft die Funktion timeit Ihren Code mehrmals auf und berücksichtigt daher die Erstkosten.

Die Funktion cputime misst die gesamte CPU-Zeit und summiert alle Threads. Diese Messung unterscheidet sich von der Echtzeit, die timeit oder tic/toc zurückgeben, und könnte irreführend sein. Beispiel:

  • Die CPU-Zeit für die Funktion pause ist in der Regel gering, jedoch spiegelt die Echtzeit die tatsächliche Zeit wider, in der die Ausführung von MATLAB unterbrochen ist. Daher kann die tatsächliche Zeit länger sein.

  • Wenn Ihre Funktion vier Prozessorkerne gleichmäßig nutzt, könnte die CPU-Zeit etwa viermal höher sein als die Echtzeit.

Empfehlungen zur Leistungsmessung

Beachten Sie die folgenden Hinweise, wenn Sie die Leistung Ihres Codes messen:

  • Messen Sie einen ausreichend großen Teil des Codes. Idealerweise sollte die Ausführung des Codes, den Sie messen möchten, länger als 1/10 Sekunde dauern.

  • Fügen Sie den Code, den Sie messen möchten, in eine Funktion ein, anstatt ihn in der Befehlszeile oder in einem Skript zu messen.

  • Sofern Sie nicht die Erstkosten messen möchten, führen Sie Ihren Code mehrmals aus. Verwenden Sie die Funktion timeit.

  • Vermeiden Sie clear all bei der Leistungsmessung. Weitere Informationen finden Sie unter clear-Funktion.

  • Weisen Sie Ihre Ausgabe einer Variablen zu, anstatt sie standardmäßig auf ans zu belassen.

Siehe auch

| | |

Themen