Почему в MSYS такая медленная настройка? - PullRequest
17 голосов
/ 13 февраля 2010

Когда я использую MSYS для компиляции чего-либо, шаг ./configure может занять больше времени, чем make. Однако тот же процесс в Linux имеет быструю настройку и медленную сборку. Это просто какая-то настройка в MSYS, которая перегружает мою систему? У кого-нибудь есть решение?

Ответы [ 3 ]

22 голосов
/ 13 февраля 2010

Типичные configure сценарии выполняют лот запуска небольших подпроцессов. В Unix-подобных операционных системах это делается с помощью вызовов функций fork() и exec(), которые имеют особую семантику, которую необходимо сохранить (например, разделяемая память при копировании при записи после разветвления). В Windows подпроцессы создаются с CreateProcess(), который имеет очень разную семантику (например, полностью отделяет пространство памяти от родительского). Для правильного выполнения Unix-подобных сценариев и программ MSYS необходимо выполнить большую работу по эмуляции, чтобы создание новых процессов в Windows работало, как fork()/exec() в Unix. Это оказывается медленнее, чем в ОС, которая предлагает эти вызовы функций изначально.

0 голосов
/ 03 января 2013

Это связано с большим доступом к диску, что, IMHO, сильно тормозит. Например, configure создает временный исходный код для компиляции в рамках выполняемых им тестов. Это создает объектный файл, который должен быть удален снова. Чтобы ускорить настройку, я извлекаю исходный код, который хочу построить на ОЗУ, и настраиваю его там. Я рекомендую использовать ImDisk (http://www.ltr -data.se / opencode.html / # ImDisk), который бесплатный.

0 голосов
/ 12 октября 2010

Вы также можете отключить любые антивирусные сканеры, которые у вас установлены. Они будут повторно проверять исполняемый файл каждый раз, когда он загружается, что абсолютно снижает производительность скрипта.

Даже если у вас не запущен антивирус, не забудьте о Защитнике Windows. (Вы также можете отключить контроль учетных записей, хотя я не знаю, как это повлияет на время загрузки программы.)

...