Unix-Befehl für Benchmark-Code K-mal ausgeführt

7

Angenommen, ich habe einen Code in Unix auf diese Weise ausgeführt:

%Vor%

Meine Frage ist, ob ich die Laufzeit meines Codes zeitlich bestimmen kann K-mal ausgeführt. Der Wert von K = 1000 zum Beispiel.

Ich kenne den Unix-Befehl "time", aber ich habe nur 1 Instanz ausgeführt.

    
neversaint 18.02.2009, 07:00
quelle

6 Antworten

13

probiere

aus %Vor%

Schreiben Sie eine Schleife, um in den Parens zu gehen, um Ihren Befehl nach Bedarf zu wiederholen.

Aktualisieren

Okay, wir können die Befehlszeile zu lange lösen. Dies ist die Bash-Syntax. Wenn Sie eine andere Shell verwenden, müssen Sie möglicherweise expr (1) verwenden.

%Vor%     
Charlie Martin 18.02.2009, 07:03
quelle
14

zur Verbesserung / Klärung von Charlies Antwort:

%Vor%     
Evan Teran 18.02.2009 07:06
quelle
5

Nur ein Wort des Rates: Stellen Sie sicher, dass dieser "Benchmark" Ihrem tatsächlichen Gebrauch des ausgeführten Programms nahe kommt. Wenn es sich um einen kurzlebigen Prozess handelt, kann ein erheblicher Overhead allein durch die Prozessgenerierung verursacht werden. Gehen Sie nicht davon aus, dass es dasselbe ist, als wenn Sie dies als eine Schleife innerhalb Ihres Programms implementieren würden.

    
paprika 18.02.2009 07:24
quelle
3

Um ein paar andere Antworten etwas zu verbessern, können einige von ihnen (die auf Seq basieren) eine Befehlszeile zu lange verursachen, wenn Sie sich entscheiden, es zu testen, sagen wir eine Million Mal. Das Folgende hat diese Einschränkung nicht.

%Vor%     
Diego Sevilla 18.02.2009 07:25
quelle
2

Eine andere Lösung für das Problem "command line too long" ist die Verwendung einer C-style for-Schleife innerhalb der bash:

%Vor%

Das funktioniert auch in zsh (obwohl ich wette, zsh hat eine etwas nettere Art, es zu benutzen, ich bin nur noch neu in zsh). Ich kann andere nicht testen, da ich nie andere benutzt habe.

    
fow 21.02.2009 14:19
quelle
0

Wenn Sie sich Sorgen machen, dass die ausführbare Datei ständig in den Prozessspeicher geladen und entladen wird, rate ich Ihnen, eine Ramdisk einzurichten und die App von dort zu synchronisieren.

In den 70er Jahren war es möglich, ein "sticky" -Bit auf die ausführbare Datei zu setzen und es im Speicher zu belassen. Ich kenne kein einziges Unix, das dieses Verhalten jetzt unterstützt, da es das Aktualisieren von Anwendungen a Alptraum ....: o)

    
ScaryAardvark 18.02.2009 07:51
quelle

Tags und Links