Ich habe einen C-Code geschrieben, den ich MATLAB benutze, nachdem ich ihn mit MEX kompiliert habe. Innerhalb des C-Codes messe ich die Zeit eines Teils der Berechnung unter Verwendung des folgenden Codes:
%Vor%Die verstrichene Zeit sollte die Ausführungszeit in Sekunden sein.
Ich gebe dann den Wert time_elapsed
an MATLAB aus (es wird korrekt exportiert; ich habe es überprüft). Dann MATLAB-Seite rufe ich diese C-Funktion auf (nachdem ich sie mit MEX kompiliert habe) und messe die Ausführungszeit mit tic
und toc
. Was sich als vollständige Absurdität herausstellt, ist, dass die Zeit, die ich mit Tic und Toc berechne, 0,0011s (Durchschnitt bei 500 Läufen, st. Dev. 1,4e-4) beträgt, während die Zeit, die vom C-Code zurückgegeben wird, 0,037s beträgt ( durchschnittlich 500 Runs, St. Dev. 0.0016).
Hier kann man zwei sehr merkwürdige Tatsachen bemerken:
Was ist mit diesen Timern los?
Sie vergleichen Äpfel mit Orangen.
Schau dir Matlabs Dokumentation an:
Mittic und toc können Sie die tatsächlich abgelaufene Zeit messen.
Sehen Sie sich nun die Uhr Funktion Ссылка an.
Insbesondere
Die Funktion clock () gibt eine vom Programm verwendete Approximation der Prozessorzeit zurück.
Der zurückgegebene Wert ist die CPU-Zeit, die bisher verwendet wurde als clock_t; zu Erhalte die Anzahl der Sekunden, die du benutzt hast, dividiere durch CLOCKS_PER_SEC. Wenn die Prozessorzeit ist nicht verfügbar oder ihr Wert kann nicht sein dargestellt, gibt die Funktion den Wert (clock_t) -1 zurück.
Was kann für Ihren Unterschied verantwortlich sein?
Also was zu tun ist ... für den Anfang vergleichen Sie Äpfel mit Äpfeln! Stellen Sie als nächstes sicher, dass Sie die Timer-Auflösung berücksichtigen.