Я использую time
некоторые из моих команд. Теперь, чтобы усреднить измерения, я хотел бы запускать и рассчитывать мои команды указанное количество раз и получать результаты с вычисленным средним и стандартным отклонением. Результат будет таким:
avgtime -n 100 my_command
real 0m5.388s stdev 0m0.068s
user 0m5.380s stdev 0m0.067s
sys 0m0.004s stdev 0m0.000s
Есть ли для этого инструмент UNIX? Есть ли у GNU / Linux такой?
performance
time
benchmark
time-utility
Дидье Троссет
источник
источник
os.system()
, вызывает накладные расходы на вызов / создание оболочки с каждой командой. Вероятно, лучше использовать subprocess.call ()Это не совсем UNIX или GNU / Linux инструмент, но вы вполне можете использовать программную среду R для статистических вычислений для этого. ( Хотя я не могу найти ничего более конкретного для вашей задачи .)
Edit Как я мог сомневаться, там, конечно , является эталоном для пакета
R
:rbenchmark
. По-видимому, это обертки,system.time()
которые вы также можете просто использовать напрямую. Или взгляните на это, простая пара функций секундомера. Также смотрите «Выполнение системной команды» @Rosetta Code (или нет, это такsystem("command")
.)Edit2 Я только что увидел этот вопрос, «Измерение времени в скрипте» в правом столбце «Связанные», его тоже можно использовать, т. Е. Взять время, выполнить цикл for (
N
времена), снова взять время, вычислить временной интервал, разделить наN
, (Еще проще, попробуйтеtime ( for-loop )
, разобрать его вывод, поделить наN
).источник
Вы можете использовать,
R
чтобы быстро вычислить среднее значение, стандартное отклонение и другие интересные значения.Например, вы можете использовать время GNU для записи нескольких измерений времени выполнения в файл CSV:
Затем вы можете сгенерировать значения с помощью R следующим образом:
Я создал небольшой тестовый скрипт, который также печатает вывод R, например:
источник
Вариант 1 - sqlite :
создайте простую таблицу со столбцами команд и времени и просмотрите соответствующие вычисления агрегации . По истечении времени добавьте строку в таблицу.
Преимущества: проще определить таблицу по сравнению с решением 2.
Недостатки: вам нужно (вам?) Заботиться о сохранении данных.
Вариант 2 - rrdtool :
Определите файл базы данных rrd, определение данных и функции агрегирования. По истечении времени добавьте в базу данных
rrdtool update ...
.Преимущества: вы можете легко создавать графики с
rrdtool graph ...
. Отсутствие проблемы с сохранением данных (круговая база данных).Недостатки: немного сложнее определить базу данных rrd по сравнению с простой таблицей / представлением SQL
источник
Hyperfine это еще один вариант.
Пример использования:
Смотрите связанный вопрос .
источник