У меня есть скрипт для преобразования видеофайлов, и я запускаю его на сервере на тестовых данных и измеряю его время time
. В результате я увидел:
real 2m48.326s
user 6m57.498s
sys 0m3.120s
Почему реальное время намного меньше, чем пользовательское? Это как-то связано с многопоточностью? Или что еще?
Изменить: И я думаю, что сценарий был запущен около 2m48s
real
время - это время на стене, как объясняется ниже (то есть, что мы измерили бы, если бы у нас был секундомер)Ответы:
Вывод, который вы показываете, немного странный, так как реальное время обычно будет больше, чем два других.
Real
Время настенное время. (что мы могли бы измерить с помощью секундомера)User
время - количество времени, проведенное в пользовательском режиме в процессеSys
время процессора в ядре внутри процесса.Таким образом, я полагаю, если бы работа выполнялась несколькими процессорами одновременно, время процессора было бы больше, чем истекшее время настенных часов.
Было ли это параллельное / многопоточное / параллельное приложение?
Просто в качестве примера, это то, что я получаю в своей системе Linux при выполнении
time find .
команды. Как и ожидалось, прошедшееreal
время намного больше, чем у других в этом одноядерном / одноядерном процессе.Эмпирическое правило:
источник
avconv
является ли многопоточным. Может быть.avconv
это новое поколениеffmpeg
. Я конвертировал 7 коротких файлов FLV (около 20 секунд каждый).find
примереusr
значение намного ниже, поскольку большая часть времени была потрачена на прерывания, даже еслиfind
бы он был многопоточным, он остался бы низким (извините, если я не справляюсь с английскими временами).Просто чтобы проиллюстрировать сказанное с помощью двухпоточных процессов, выполняющих некоторые вычисления.
компиляции
(Это просто для иллюстрации, в реальной жизни я должен был добавить флаг -D_REENTRANT)
(Время идет на Intel Atom, который имеет два медленных ядра :))
источник