Ich habe ein Skript, das Videodateien konvertiert und ich führe es auf dem Server auf Testdaten aus und messe seine Zeit durch time
. Im Ergebnis habe ich gesehen:
real 2m48.326s
user 6m57.498s
sys 0m3.120s
Warum ist die Echtzeit so viel kürzer als die Benutzerzeit? Hat dies irgendeinen Zusammenhang mit Multithreading? Oder was noch?
Edit: Und ich denke, dass das Skript ca. 2m48s lief
real
Uhrzeit die Uhrzeit der Wanduhr ist, wie unten erläutert (dh was wir messen würden, wenn wir eineAntworten:
Die Ausgabe, die Sie anzeigen, ist etwas seltsam, da die Echtzeit normalerweise größer ist als die beiden anderen.
Real
Zeit ist Wanduhrzeit. (was wir mit einer Stoppuhr messen könnten)User
Zeit ist die Zeit, die im Benutzermodus innerhalb des Prozesses verbracht wirdSys
ist die CPU-Zeit, die im Kernel innerhalb des Prozesses verbracht wird.Wenn also die Arbeit von mehreren Prozessoren gleichzeitig ausgeführt würde, wäre die CPU-Zeit höher als die verstrichene Wanduhrzeit.
War dies eine gleichzeitige / Multithread- / Parallel-Anwendung?
Nur als Beispiel, das ist es, was ich auf meinem Linux-System erhalte, wenn ich den
time find .
Befehl gebe. Wie erwartet ist die verstrichenereal
Zeit bei diesem Einzelbenutzer- / Einzelkernprozess viel länger als bei den anderen.Die Faustregel lautet:
quelle
avconv
es sich um Multithreading handelt. Möge es sein.avconv
ist die neue Generation vonffmpeg
. Ich konvertierte 7 kurze FLV-Dateien (jeweils ca. 20 Sekunden).find
Beispielusr
ist der Wert viel niedriger, da die meiste Zeit während der Interrupts verbracht wurde, auch wennfind
Multithreading verwendet worden wäre, wäre er niedrig geblieben (sorry, wenn ich die englischen Zeiten nicht beherrsche).Nur um zu veranschaulichen, was gesagt wurde, mit zwei Thread-Prozessen, die einige Berechnungen durchführen.
kompilieren
(Dies ist nur zur Veranschaulichung, im wirklichen Leben hätte ich das -D_REENTRANT-Flag hinzufügen sollen.)
(Die Zeiten sind auf einem Intel Atom, der zwei langsame Kerne hat :))
quelle