2016-09-29 1 views
1

Ich möchte Laufzeit meines Programms berechnen, die PI mit Monte-Carlo-Methode approximiert. Ich habe ein Unix-Shell-Skript geschrieben, das das Programm No von Punkten, N = 10^{k}, für K = 1,2, ... 7 eingibt. Jetzt möchte ich die Ausführungszeit für jedes N in Unix-Programmzeit finden. Mein Unix-Shell-Skript sieht wie folgt aus:Berechnung Laufzeit des Programms für jede Iteration mit Unix-Programmzeit

#!/bin/bash 

k=1 
N=10 
while [[ k -le 7 ]] 
do 
    echo "$k N" | ./pi $N 

    ((k = k + 1)) 
    ((N = N * 10)) 
done 

Jetzt, wenn ich schreibe: $ time ./pi.sh, es gibt mir die gesamte Ausführungszeit

 10     3.6   0.1459155902616465 
     100    3.08   0.01960555055392467 
     1000    3.104   0.01196611328551369 
    10000    3.1284   0.004199352062629202 
    100000    3.1432   0.0005116342528909465 
    1000000   3.139704   0.0006011771092076384 
    10000000   3.141432   5.113762588206346e-05 

real 0m0.583s 
user 0m0.560s 
sys  0m0.012s 

Ich frage mich, wenn ich einen Bash-Skript zu schreiben, die Ausführung zu erhalten Zeit für jeden N-Eingang oder ich muss etwas in meinem Code machen.

Antwort

1

Indem Sie $ time ./pi.sh schreiben, messen Sie die Zeit, die benötigt wird, um pi.sh auszuführen, die eine Schleife enthält. Sie messen die Gesamtzeit für alle Iterationen. Wenn Sie jede Iteration unabhängig messen wollen, müssen Sie time in Aufruf der Iteration setzen:

echo "$k N" | time ./pi $N 
+0

, die großen Werke! unter den drei Zeitausgängen bekomme ich, welche die Programmlaufzeit darstellt? – bhjghjh

+0

"real" ist ein echtes Wort Zeit verbracht. Wenn die App schläft oder wenn die CPU von einer anderen App verwendet wird, tickt dieser Timer immer noch. "Benutzer" ist die CPU-Zeit, die im Benutzermodus verbracht wird. "sys" ist die CPU-Zeit im Kernel-Modus. –

+0

ok, was ist das für eine echte Laufzeiteinheit? Wie bekomme ich das in Sekunden aus dem Unix-Skript? – bhjghjh

Verwandte Themen