Почему программы никогда не выполняются в одно и то же время? - PullRequest
0 голосов
/ 03 февраля 2019

Это более общий технический вопрос.Мне просто любопытно, каковы основные факторы, определяющие, насколько быстро или медленно работает компьютерная программа?

Например, когда я работаю с кодом Python, время выполнения всегда изменяется по крайней мере на +/- 0,02 секунды

1 Ответ

0 голосов
/ 04 февраля 2019

Существует множество причин отклонения во времени выполнения.Изменение ~ 200 мс выглядит правдоподобно для сценария Python, который выполняется в течение нескольких секунд.Основными участниками здесь будут ОС / планировщик и память / кеш.ОС будет обрабатывать прерывания на ядре, на котором работает ваш скрипт, а при блокировке системных вызовов запускается планировщик, который будет запускать фоновые задачи на этом ядре.Пока эти задачи выполняются, они загрязняют кэш-память L1, L2 и L3, так что некоторая часть данных и кода этого сценария python будет перемещена в ОЗУ.Таким образом, ссылки на память всегда будут занимать разное время при каждом запуске, потому что вы никогда не сможете воспроизвести объем памяти фоновых задач, прервавших ваш сценарий.

Если вы работаете в Linux, вы можете попытаться запланировать свой сценарий на процессор, который былотключен от планировщика с помощью параметра загрузки ядра isolcpu =, так что у вас меньше шума от других процессовТогда у вас будет на несколько порядков меньше вариаций, но некоторые будут приходить от использования общих ресурсов - контроллеров памяти, шин ввода-вывода, общего кэша последнего уровня.

...