При использовании команды time
для измерения времени различных выполнений процесса (при разных аппаратных обстоятельствах) я столкнулся с явлением, которое я не понимаю.
real time
1-го исполнения было 77 minutes
и 82 minutes
для 2-го исполнения. Тем не менее, user time
был на 6 минут быстрее во 2-м исполнении и аналогично для sys time
2-е исполнение было на 1 минуту быстрее.
Как реальное время все еще может быть лучше для 1-го выполнения?
И при сравнении времени выполнения, какой из 3-х раз является хорошим показателем общего времени выполнения процесса? (У меня есть процессы, которые выводят много информации, и процессы, которые ничего не выводят, если это что-то меняет)
Если я правильно помню:
real time
представляет время часов: это количество времени, которое требуется процессу для запуска. Это время зависит от количества процессов, запускаемых в системе, поэтому это может объяснить, почему в реальном времени лучше при первом выполнении. user time
представляет количество процессорного времени, связанное с инструкциями пользователя. (пользовательский режим вне ядра) sys time
- это количество времени, которое процессор проводит в ядре в процессе работы. Например, всякий раз, когда вы используете методы read
или write
, время, затрачиваемое в ядре на выполнение этих «сервисов», оплачивается до этого времени. Таким образом, при сравнении общего времени выполнения вы можете использовать user time + sys time
.
Надеюсь, это поможет.