Ja time
ing niektóre z moich poleceń. Teraz, aby uśrednić miary, chciałbym uruchomić i określić czas moich poleceń określoną liczbę razy i uzyskać wyniki z obliczoną średnią i odchyleniem standardowym. Wynik byłby następujący:
avgtime -n 100 my_command
real 0m5.388s stdev 0m0.068s
user 0m5.380s stdev 0m0.067s
sys 0m0.004s stdev 0m0.000s
Czy istnieje do tego narzędzie UNIX? Czy GNU / Linux ma taki system?
performance
time
benchmark
time-utility
Didier Trosset
źródło
źródło
os.system()
powoduje obciążenie związane z wywoływaniem / tworzeniem powłoki przy każdym poleceniu. Prawdopodobnie lepiej użyć subprocess.call ()Nie jest to do końca narzędzie UNIX lub GNU / Linux, ale można w tym celu całkiem wygodnie korzystać ze środowiska oprogramowania R do obliczeń statystycznych . (Nie mogę jednak znaleźć nic bardziej konkretnego dla twojego zadania .)
Edit Jak mogłem wątpić, że oczywiście jest to pakiet odniesienia dla
R
:rbenchmark
. Najwyraźniej jest to opakowanie,system.time()
którego można również użyć bezpośrednio. Lub spójrz na to, prosta para funkcji stopera. Zobacz także „Wykonywanie polecenia systemowego” @Rosetta Code (lub nie, to jestsystem("command")
.)Edytuj2 Właśnie widziałem to pytanie „Mierzenie czasu w skrypcie” w prawej kolumnie „Powiązane”, można go również użyć, tj. Poświęć czas, wykonaj pętlę for-time (
N
czasy), poświęć czas ponownie, oblicz czas, podziel przezN
. (Jeszcze łatwiej, spróbujtime ( for-loop )
przeanalizować jego wynik, podzielić przezN
).źródło
Możesz użyć
R
do szybkiego obliczenia średniej, odchylenia standardowego i innych interesujących wartości.Na przykład możesz użyć czasu GNU, aby zapisać kilka pomiarów czasu wykonywania w pliku CSV:
Następnie możesz wygenerować wartości z R w następujący sposób:
Stworzyłem mały skrypt testowy, który również ładnie drukuje dane wyjściowe R, np .:
źródło
Opcja 1 - sqlite :
utwórz prostą tabelę z kolumnami poleceń i czasu oraz wyświetlaj z odpowiednimi obliczeniami agregacji . Po upływie czasu dodaj wiersz do tabeli.
Zalety: łatwiej jest zdefiniować tabelę w porównaniu do rozwiązania 2.
Wady: potrzebujesz (czy?) Dbania o zatrzymywanie danych.
Opcja 2 - rrdtool :
Zdefiniuj plik bazy danych rrd, funkcje definicji i agregacji danych. Po upływie czasu podaj bazę danych
rrdtool update ...
.Zalety: możesz łatwo generować wykresy
rrdtool graph ...
. Brak problemu z zatrzymywaniem danych (baza danych Round Robin).Wady: nieco trudniej zdefiniować bazę danych rrd w porównaniu do prostej tabeli / widoku SQL
źródło
Hyperfine to kolejna opcja.
Przykładowe użycie:
Zobacz powiązane pytanie .
źródło