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.
probiere
aus %Vor%Schreiben Sie eine Schleife, um in den Parens zu gehen, um Ihren Befehl nach Bedarf zu wiederholen.
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%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.
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%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.
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)
Tags und Links c++ benchmarking performance unix