Gdy używam MSYS do kompilacji, etap ./configure
może trwać dłużej niż make
. Jednak ten sam proces w Linuksie ma szybką konfigurację i powolny make. Czy to po prostu jakieś ustawienie w MSYS, które pogrąża mój system? Czy ktoś ma rozwiązanie?Dlaczego konfiguracja jest tak powolna w MSYS?
Odpowiedz
Typowe configure
skrypty zrobić dużo rozpoczynania małych podprocesów. W systemach operacyjnych typu Unix odbywa się to za pomocą wywołań funkcji fork()
i exec()
, które mają bardzo szczególną semantykę, która musi zostać zachowana (na przykład, pamięć współużytkowana do zapisu po zapisie). W systemie Windows podprocesy są tworzone przy pomocy CreateProcess()
, która ma bardzo różną semantykę (np. Całkowicie oddzielne miejsce w pamięci od obiektu nadrzędnego). Aby poprawnie wykonywać skrypty i programy typu Unix, MSYS musi wykonać wiele prac emulacyjnych, aby tworzenie nowych procesów w systemie Windows działało jak na Unixie pod numerem fork()/exec()
. To kończy się wolniej niż system operacyjny, który oferuje te funkcje natywnie.
Możesz również wyłączyć wszystkie skanery antywirusowe. Będą ponownie skanować plik wykonywalny za każdym razem, gdy zostanie załadowany, co całkowicie zabija działanie skryptu.
Nawet jeśli nie masz uruchomionego antywirusa, nie zapomnij o programie Windows Defender. (Możesz także wyłączyć Kontrolę konta użytkownika, ale nie wiem, jaki wpływ miało to na czas ładowania programu.)
Wymagany jest duży dostęp do dysku, co powoduje znaczne spowolnienie pracy IMHO. Na przykład configure tworzy tymczasowy kod źródłowy, który ma zostać skompilowany w ramach testów, które wykonuje. Spowoduje to utworzenie pliku obiektu, który musi zostać usunięty ponownie. Co zrobić, aby przyspieszyć konfigurację, to wypakuj źródło, które chcę zbudować na dysku RAM, i skonfiguruj i skompiluj je tam. Polecam korzystanie z ImDisk (http://www.ltr-data.se/opencode.html/#ImDisk), które jest bezpłatne.
- 1. Dlaczego rekursja w javascript jest tak powolna?
- 2. Dlaczego metoda resolveInfo.loadLabel() jest tak śmiesznie powolna?
- 3. Dlaczego pętla jest tak powolna w kodzie Racket
- 4. Dlaczego wydajność Cgo jest tak powolna? czy coś jest nie tak z moim kodem testowym?
- 5. Dlaczego tablica.min jest taka powolna?
- 6. Dlaczego funkcja numpy.array() jest czasami bardzo powolna?
- 7. Dlaczego tak jest w Crossfilter?
- 8. Dlaczego ta instrukcja SQL jest bardzo powolna?
- 9. dlaczego ta funkcja pętli jest tak powolna w porównaniu do mapy?
- 10. Dlaczego Scala "dla pętli" jest tak bardzo powolna w porównaniu do pętli FOR?
- 11. Dlaczego cv :: resize jest tak wolny?
- 12. Dlaczego ta funkcja rekurencyjna w Haskell jest taka powolna?
- 13. Dlaczego MVC jest tak popularny?
- 14. Dlaczego groupby jest tak szybki?
- 15. Dlaczego getline jest tak niespójny?
- 16. Dlaczego Chrome jest tak szybki?
- 17. Dlaczego prezentacja kinect jest powolna na moim komputerze?
- 18. Funkcja korelacji Scipy'ego jest powolna
- 19. Powolna rekursja w pytonie
- 20. Zmiana rozmiaru KALayera jest powolna
- 21. Aktualizacja zbiorcza jest zbyt powolna.
- 22. atuty rake: prekompilacja jest powolna
- 23. Dlaczego wywołanie metody Java jest tak kosztowne?
- 24. Dlaczego uruchamianie aplikacji PyQt jest tak wolne?
- 25. Dlaczego plik putImageData jest tak wolny?
- 26. Dlaczego setColor jest tak wolny na Androidzie
- 27. Dlaczego plik numpy.absolute() jest tak wolny?
- 28. Dlaczego ten kod Haskella jest tak wolny?
- 29. Dlaczego Deque Pypy jest tak wolny?
- 30. Dlaczego mój serwer hgweb jest tak wolny?
To naprawdę nie jest tak źle dla 'CreateProcess' w systemie Windows. Myślę, że cygwin próbuje naśladować widelec w oknach, co sprawia, że jest niesamowicie wolny. Jeśli bash nie używa fork (przypuszczam, że używa fork, ale nie sprawdziłem), aby uruchomić procesy, to konfiguracja będzie działać równie szybko. W moim pudełku i7, kiedy próbowałem naprawić ten "problem", okazało się, że cygwin może rozwidniać się tylko kilka razy na sekundę. Sposób testowania prędkości fork: while (true); do daty; zrobione | uniq -c – Pavel
+1 Pavel .. uclinux miał taki sam problem, że mógł działać bez MMU i wszystko z rozwidleniem używane bardzo powolny pełny egzemplarz – user1496062