Я выполнил одну программу, и когда я вычислил время, прошедшее, я обнаружил, что время не является постоянным. Он варьируется под некоторым диапазоном. Я хотел знать, почему это так?Почему время меняется?
ответ
Поскольку существует несколько процессов, выполняющихся одновременно с вашим приложением.
Даже если вам удалось полностью изолировать ваше приложение, нет никаких гарантий, что один и тот же код будет работать с одинаковой скоростью каждый раз. Вот почему вы должны действительно получать средние значения за несколько запусков, если вы тестируете производительность (предполагая, что это то, что вы здесь делаете).
Если вы измеряете эффективность, есть более объективные/формальные способы его определения:
См:Big-O notation
Вы часто этот вид поведения, когда вы измеряете истекшее время. Это потому, что прошедшее время зависит от всех других вещей, которые может делать ваш компьютер.
Смотрите, например:
pax> time sleep 1
real 0m1.012s
user 0m0.004s
sys 0m0.000s
pax> time sleep 1
real 0m1.002s
user 0m0.004s
sys 0m0.000s
pax> time sleep 1
real 0m1.007s
user 0m0.004s
sys 0m0.000s
Во всех этих случаях, истекшее real
время меняется, но фактическое использование процессора, user+sys
удивительно последователен.
Для определения времени вы должны использовать наиболее точные измерения, которые вы можете (например, user+sys
) для устранения внешних воздействий. Вы также должны использовать статистические методы для получения более точной картины.
Например, я, как правило, выполняю двенадцать пробегов, выбрасываю выбросы (самые быстрые и медленные), а затем усредняю оставшиеся десять.
Здесь 'user + sys' является только последовательным, потому что код тривиален. Реальный код будет иметь разные значения 'user' и' sys', если выполняются другие процессы из-за загрязнения кэша, конфликтов ресурсов (например, если выполняются несколько процессов io) и т. Д. –
Несомненно, но точка, которую я делал, использовать меру настолько точно, насколько это возможно - 'user + sys' по-прежнему является более точным, чем прошедшее время, а статистическое усреднение смягчит последствия этих других факторов. – paxdiablo
- 1. Почему время меняется при добавлении события
- 2. Почему меняется ширина?
- 3. Почему путь меняется?
- 4. Почему этот bool меняется?
- 5. Дата меняется во время разбора
- 6. Почему меняется моя указатель?
- 7. Почему мой выход меняется?
- 8. Почему меняется формат даты?
- 9. Почему так быстро меняется?
- 10. Почему цвет фона меняется?
- 11. Почему указатель меняется точно?
- 12. Почему значение && оператора меняется
- 13. Почему эта точка меняется?
- 14. Почему меняется эта переменная?
- 15. Почему URL меняется
- 16. почему время, необходимое для выполнения того же яваскрипт кода меняется
- 17. Почему моя строка меняется во время шифрования Цезаря?
- 18. Почему меняется цвет текста ссылки во время зависания?
- 19. Почему вращение глобальной камеры var.this.js не меняется во время позиции?
- 20. Почему мое время цикла для цикла не меняется?
- 21. z3py: почему время проверки меняется так сильно после переименования переменной?
- 22. Почему меняется время моего входного сигнала при изменении метода прерывания?
- 23. Почему чтение файла несколько раз меняется во время чтения?
- 24. Почему куча меняется в Java
- 25. EAX меняется на время доступа
- 26. python os.path.getmtime() время не меняется
- 27. OffsetDateTime время меняется зона смещения
- 28. Почему логическое значение не меняется?
- 29. Пользовательский UITableViewCell меняется indexPath Во время прокрутки?
- 30. Почему цвет JPanel не меняется?
Потому что ваш компьютер делает несколько вещей. – GManNickG
Ничто не является постоянным (кроме 'const'): P – alex
Единственное постоянное значение -« Изменить ». –