- Команда time вывод в мс., pavel_simple., 14:23 , 04-Сен-24 (1)
>[оверквотинг удален] > на порядок меньше: > # /bin/time -p ./my_prog < input.txt >> real 0.05 >> user 0.02 >> sys 0.03 > # /bin/time -f "real\t%e\nuser\t%U\nsys\t%S" ./my_prog < input.txt >> real 0.05 >> user 0.02 >> sys 0.03 > # и снова третье сентября
- Команда time вывод в мс., Аноним, 22:42 , 04-Сен-24 (2)
-f "real %6.3f\nuser %6.3f\nsys %6.3f\n"А вообще, какую time и в какой ОС используете?
- Команда time вывод в мс., evi, 22:53 , 04-Сен-24 (3)
> -f "real %6.3f\nuser %6.3f\nsys %6.3f\n" Не работает, что естественно. "A percent sign (`%') in the format string causes the character to be interpreted as a resource specifier, which is similar to the formatting characters in the printf(3) function." > А вообще, какую time и в какой ОС используете? Linux. Lubuntu. В теме Unix стоит. :)
- Команда time вывод в мс., Аноним, 18:01 , 06-Сен-24 (4)
В моей системе GNU time 1.7 . Скачал исходный текст этой программы с https://ftp.gnu.org/gnu/time/Там точность жёстко забита в 2 цифры после точки: case 'S': /* System time. */ fprintf (fp, "%ld.%02ld", resp->ru.ru_stime.tv_sec, resp->ru.ru_stime.TV_MSEC / 10); break; case 'U': /* User time. */ fprintf (fp, "%ld.%02ld", resp->ru.ru_utime.tv_sec, resp->ru.ru_utime.TV_MSEC / 10); break; так что, надо программу модифицировать. Или использовать Python: from datetime import datetime date_start = datetime.now() Что- то запускаете print('Продолжительность работы ', datetime.now() - date_start)
- Команда time вывод в мс., evi, 23:51 , 08-Сен-24 (5)
> В моей системе GNU time 1.7 . > Скачал исходный текст этой программы с > https://ftp.gnu.org/gnu/time/ > Там точность жёстко забита в 2 цифры после точки: Тоже глянул. Действительно. А ещё оказывается есть time как shell keyword, которое вшито в ядро и оно умеет в ms. А есть /bin/time -- отдельный бинарник. В итоге, это две разные команды. Спасибо большое!
- Команда time вывод в мс., Аноним, 13:53 , 09-Сен-24 (6)
>А ещё оказывается есть time как shell keyword, которое > вшито в ядро и оно умеет в ms. А есть /bin/time > -- отдельный бинарник. В итоге, это две разные команды.у меня: $ type time time является /usr/bin/time то есть в моей системе нет time как команды shell . Зато есть команда shell 'times': "times Print the accumulated user and system times for the shell and for pro‐ cesses run from the shell." Проверим: $ times date 0m0.039s 0m0.005s 0m0.000s 0m0.000s Работает.
- Команда time вывод в мс., evi, 17:44 , 09-Сен-24 (7)
> у меня: > $ type time > time является /usr/bin/time У меня: $ type time time is a shell keyword $ man bash ... RESERVED WORDS Reserved words are words that have a special meaning to the shell. The follow‐ ing words are recognized as reserved when unquoted and either the first word of a command (see SHELL GRAMMAR below), the third word of a case or select command (only in is valid), or the third word of a for command (only in and do are valid): ! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]q ... > то есть в моей системе нет time как команды shell . > Зато есть команда shell 'times': $time sleep 3 real 0m3,012s user 0m0,003s sys 0m0,009s $ /bin/time -p sleep 3 real 3.00 user 0.00 sys 0.00 $times sleep 3 0m0,353s 0m0,287s 0m19,345s 0m4,564s Что-то эта команда другое делает. Не хочу разбираться. :-) Почитать про сам time, который is shell keyword, можно так: help time Меня вполне устраивает по своему результату конструкция: $time ./my_prog < input.txt > /dev/null Но проблема в том, что в рамках скрипта #!/bin/sh, почему-то срабатывает /bin/time...
- Команда time вывод в мс., Аноним, 19:56 , 09-Сен-24 (8)
Да, times не для хронометража. А какая оболочка? Запустите echo $SHELLА сценарии запускать можно с шебангом #!/bin/bash может тогда сработает. А если не получится - в принципе несложно модифицировать GNU time, исходный текст же есть. Надо только установить компилятор (gcc), build-essentials, make.
- Команда time вывод в мс., evi, 20:15 , 09-Сен-24 (9)
> А сценарии запускать можно с шебангом > #!/bin/bash Да, так и сделал. Заработало, но не всё гладко. Есть скрипт runtest.sh, в нём есть уже известная строка: time ./my_prog < input.txt > /dev/null Проблема что когда конвеером передаю в less: $ ./runtest | less Во время листинга (j, k, gg, G) исчезают строки которые вернула команда time. Вывод команды явно идёт не в stdout. Есть какая-то возможность определить какой номер потока у неё (если он, конечно, есть)?
- Команда time вывод в мс., evi, 22:40 , 09-Сен-24 (10)
> Во время листинга (j, k, gg, G) исчезают строки которые вернула команда > time. Вывод команды явно идёт не в stdout. Есть какая-то возможность > определить какой номер потока у неё (если он, конечно, есть)?У /bin/time выводится в stderr. Куда выводится у bash'овского time пока загадка. 190 /* Output stream, stderr by default. */ 191 static FILE *outfp; ... 650 outfp = stderr;
- Команда time вывод в мс., evi, 23:50 , 09-Сен-24 (11)
> Куда выводится у bash'овского time пока загадка. Проверил исходники bash, файл execute_cmd.c. Там есть подпрограмма, которая судя по всему и выводит время на экран: static void print_formatted_time (fp, format, rs, rsf, us, usf, ss, ssf, cpu) И я нашёл только один вызов данной подпрограммы: 1464 print_formatted_time (stderr, time_format, rs, rsf, us, usf, ss, ssf, cpu); Но при этом данная конструкция не работает: $time echo test 2> /dev/null test real 0m0.000s user 0m0.000s sys 0m0.000s
- Команда time вывод в мс., evi, 23:57 , 09-Сен-24 (12)
> Но при этом данная конструкция не работает: > $time echo test 2> /dev/null Всё, победа! Надо было просто экранировать. ${ time echo test; } 2> /dev/null test $
|