2016-06-29 8 views
0

Ich versuche, die maximale Speicherausgabe von den Befehlen GNU und zsh time zu verwenden und versuche, die Unterschiede, die ich in der Ausgabe sehe, in Einklang zu bringen. Mein oberstes Ziel ist es, die Spitzen-RAM-Auslastung für ein Programm zu erfassen, das unterschiedlich große Datensätze ausführt. Um den zsh zu verwenden, habe ich this example verfolgt.Unterschied zwischen GNU und zsh Zeitbefehle

$ zsh -i -c 'time ls' > hold 
ls --color=auto 0.00s user 0.00s system 40% cpu 0.002 total 
avg shared (code):   0 KB 
avg unshared (data/stack): 0 KB 
total (sum):    0 KB 
max memory:    0 MB 
page faults from disk:  0 
other page faults:   335 

Mit GNU Zeit, bekomme ich diese ...

$ /usr/bin/time -f %M ls > hold 
3632 

ich diese GNU Zeit sagt mir denken dass ls verwendet 3,6 KB RAM, aber die zsh Version verwendet keine. Als ich dies für fleischige Befehle wiederholen, erhält ich auch Unterschiede ...

$zsh -i -c 'time program > hold' 
program > hold 16.36s user 0.64s system 99% cpu 17.063 total 
avg shared (code):   0 KB 
avg unshared (data/stack): 0 KB 
total (sum):    0 KB 
max memory:    94 MB 
page faults from disk:  0 
other page faults:   25361 

Wenn ich den oberen Bildschirm sehen, es sieht aus wie die RES Spalte Peak bei 94 MB nicht aus, obwohl die VIRT-Säule bei 127 MB ist. Nach GNU-Zeit ...

$ /usr/bin/time -f %M my_program > hold 
387088 

Oder ~ 387 MB.

Kann mir jemand helfen herauszufinden, warum es die Unterschiede gibt und was mir hier fehlt?

+0

Das Ausgabeformat von * zsh * 'time' scheint nicht die Standardeinstellung zu sein. Was ist der Wert von 'TIMEFMT' (' echo $ TIMEFMT')? – Adaephon

+0

Es ist das gleiche wie hier beschrieben: http://superuser.com/questions/480928/is-there-any-command-like-time-but-for-memory-usage/767491#767491 –

Antwort

0

Ich glaube nicht, dass zsh einen Zeitbefehl hat. Könnte falsch sein, aber -c sieht aus wie "run this shell command", so dass es Ihren Pfad für time sucht und wahrscheinlich finden Sie die gleiche /usr/bin/time Sie in Bash ausgeführt werden.

Der wahrscheinliche Unterschied liegt in der Formatierung. Versuchen Sie, -f an den Aufruf von zsh zu übergeben.

http://zsh.sourceforge.net/Doc/Release/Shell-Builtin-Commands.html zeigt die Zeit nicht als eingebaut an. Sie führen den Befehl sane in beide Richtungen aus (je nachdem, was in Ihrem Pfad enthalten ist).