Я пишу скрипт для автоматического вычисления среднего времени выполнения.
Сначала мне нужно 100 раз запустить $ time ./foo.py
и сохранить вывод в файл time.txt
(работает)
$ for i in `seq 100`; do { time ./foo.py; } 2>> time.txt; done
Вывод выглядит следующим образом
time ./foo.py
real 0m0,030s
user 0m0,030s
sys 0m0,000s
[...]
Среда выполнения из разных сценариев находится в одном файле. Каждая запись начинается с time ./foo.py
, за которой следуют 100 «триплетов» из real
, user
и sys
.
Теперь, если возможно, мне бы хотелось, чтобы скрипт автоматически вычислял среднее время выполнения для каждого тестируемого файла, используя все 100 «триплетов» и аккуратно возвращая только один «средний триплет».
Я думал о том, чтобы, возможно, использовать awk
для вычисления среднего значения, как это
awk '{ total += $2 } END { print total/NR }' time.txt
Но команда должна быть адаптирована к моим потребностям - в конце концов, только части после ,
(например, ,030s
) могут быть использованы для вычислений, и s
также необходимо игнорировать.
Поскольку я не знаю, как достичь этой цели, я подумал спросить сообщество.
Любая помощь очень ценится.