Почему в MSYS такая медленная настройка?
Когда я использую MSYS для компиляции, шаг ./configure
может занимать больше времени, чем make
. Однако тот же процесс в Linux имеет быструю настройку и медленный make. Это лишь некоторые настройки в MSYS, которые увязывают мою систему? У кого-нибудь есть решение?
Ответы
Ответ 1
Типичные сценарии configure
выполняют много начальных небольших подпроцессов. В Unix-подобных операционных системах это выполняется с помощью вызовов функций fork()
и exec()
, которые имеют очень специфическую семантику, которая должна быть сохранена (например, копирование по-записи разделяемой памяти после форкирования). В Windows подпроцессы создаются с помощью CreateProcess()
, которая имеет очень разную семантику (например, полностью разделяет пространство памяти от родителя). Для правильного выполнения Unix-подобных скриптов и программ MSYS необходимо выполнить много работы по эмуляции, чтобы сделать работу над новыми процессами в Windows, например, fork()/exec()
в Unix. Это заканчивается медленнее, чем ОС, которая предлагает эти вызовы функций изначально.
Ответ 2
Вы также можете отключить все антивирусные сканеры, которые у вас запущены. Они будут повторно сканировать исполняемый файл каждый раз, когда он загружается, что абсолютно убивает производительность script.
Даже если у вас нет работы с антивирусом, не забывайте о Защитнике Windows. (Вы также можете отключить контроль учетных записей пользователей, хотя я не знаю, какое влияние это оказывает на время загрузки программы.)
Ответ 3
Привлекает много доступа к диску, что ИМХО замедляет работу.
Например, configure создает временный исходный код для компиляции как часть тестов, которые он выполняет. Это создает объектный файл, который необходимо удалить снова.
То, что я делаю, чтобы ускорить настройку, - это извлечь источник, который я хочу создать на диске RAM, и настроить его и скомпилировать там.
Я рекомендую использовать ImDisk (http://www.ltr-data.se/opencode.html/#ImDisk), который является бесплатным.