Замер времени выполенения команды


angel2s2 аватар

angel2s2 - Posted on 25 Февраль 2010

Как раз сейчас понадобилось замерить время работы скрипта... Поискал тут, не нашел :( Зато гугль помог. А все оказалось не просто, а очень просто:

$ time for i in {1..100000} ; do echo $i $>/dev/null ; done
 
real	0m3.680s
user	0m2.964s
sys	0m0.692s

ЗЫЖ В sh этого нету.

3
Ваша оценка: Ничего Рейтинг: 3 (2 голоса)

ну вы, блин, даёте. стыд и срам (;
сидели бы дальше на винде. не портите карму.

еще один "знающий-с-пеленок-юникс" объявился.
нормальный совет для начинающих. узнал - поделился.

#!/bin/bash
#
# Andrey Zakharov 2010-03-01
# above due IFS 
# benchmark the command
# TODO export TIME
# http://vaultsoft.ru/src/bench-tool
 
ITERATE=1000
REST_TIME=5 #in sec (5-60)
LOG=./BENCHMARK-$$.csv
MAXTEST=3 #
#
# test cases
#
# without bb, with bb, another config
CMD=$(cat <<COMMANDS
conky -c $HOME/.conkyrc.fast -o -u 0 -i $ITERATE 2> /dev/null
conky -c $HOME/.conkyrc.fast -o -u 0 -i $ITERATE -b 2> /dev/null
conky -c $HOME/.conkyrc -o -u 0 -i $ITERATE 2> /dev/null
conky -c $HOME/.conkyrc -o -u 0 -i $ITERATE -b 2> /dev/null
conky -c $HOME/.conkyrc.daily -o -u 0 -i $ITERATE 2> /dev/null
conky -c $HOME/.conkyrc.daily -o -u 0 -i $ITERATE -b 2> /dev/null
COMMANDS)
 
#another config
#CMD="conky -c ~/.conkyrc -o -u 0 -i 2000 -b 2>/dev/null"
# ioscheduler
 
# env TIME can not be in subshell
TIME_FORMAT='%e,\t%U,\t%S,\t%P,\t%c,\t%I,\t%O\t%M' #for csv
 
BTIME=$( which time )
$BTIME --version
BTIME="$BTIME --format=$TIME_FORMAT --output=$LOG --append -- "
 
# or ~
cd $work_dir
echo $work_dir/BENCHMARK-$$.csv
 
 
(
    echo "$CMD"
) | while read ccmd; do
 
    echo BENCHING $ccmd
 
    echo $ccmd >> $LOG
    #format tip
    echo -e "#,\telap,\tuser,\tsys,\tproc,\tcxsw,\tinput,\toutput,\tmaxres" >> $LOG
    #todo axis
    #IFS=$oldifs
    for j in $( seq $MAXTEST -1 1 ); do
        echo "Remain $j times!"
        echo -ne "$j,\t" >> $LOG
    # prepare, make external-clean clean >/dev/null
    # bench cmd: $BTIME make MVNOPTS=--offline BJAM_OPTS=-j$j -j$j all
        $BTIME $ccmd
        echo "Get a rest..."
        sleep $REST_TIME
    done
done

не плохо. как рисовал? Ж:-)

оффтоп, но перепробовав gnuplot, kspread и oocalc с поставленной задачей быстро справился только последний, не смотря на боль, с которой я смотрю на сие поделие рук человеческих :)

Workflow туп до безобразия - открываем получившийся файлик от bench-tool, копируем, открываем oocalc, вставляем с разделителями и задаем поля как текстовые (сабж имеет привычку определять их как дату и все пропадает!). Дальше - руководство сабжа :)

С GNUPlot не удалось подружиться, ибо не хватает у меня усидчивости, и требует он специфичного формата входных данных

Про kSpread ничего плохого :)

Не позорьте себя и сайт, уберите из тегов всё, кроме "Чайникам", Новичкам и, вероятно, time. И да, подобные "открытия" имхо даже стыдно публиковать.

Умный какой... Все он знает, аж стыдно...

А если по делу... Не говорите чепуху... Не все знают про эту команду, особенно те, кто не очень давно перешел с винды на никсы (в винде time показывает текущее время, а так же позволяет его изменить), такие юзеры быстро находят этот сайт. Если вы начинали с никсов и считаете себя гуру, то лучше бы и дальше молчали, а то за 1 год 35 недель сделали только один совет... Это вам должно быть стыдно... говорить такие слова.

PS: Не понимаю таких людей как ты...

тег "продвинутым" убрал. а насчет "стыдно" - фигня

/bin/time есть еще.

о_О Где?

$ /bin/time
-bash: /bin/time: Нет такого файла или каталога

У меня :) Но наводку понял...

$ which time
/usr/bin/time
 
$ /usr/bin/time
Usage: /usr/bin/time [-apvV] [-f format] [-o file] [--append] [--verbose]
       [--portability] [--format=format] [--output=file] [--version]
       [--quiet] [--help] command [arg...]

Отправить комментарий

Google Friend Connect (leave a quick comment)
loading...
Содержание этого поля является приватным и не предназначено к показу.