2010-02-13 29 views
14

Khi tôi sử dụng MSYS để biên dịch một số thứ, bước ./configure có thể mất nhiều thời gian hơn make. Tuy nhiên, quá trình tương tự trong Linux có cấu hình nhanh và làm chậm. Đây có phải chỉ là một số thiết lập trong MSYS đó là bogging xuống hệ thống của tôi? Có ai có giải pháp không?Tại sao cấu hình quá chậm trong MSYS?

Trả lời

21

Điển hình configure tập lệnh thực hiện bắt đầu quy trình phụ nhỏ. Trên các hệ điều hành giống Unix, điều này được thực hiện với các cuộc gọi hàm fork()exec(), có các ngữ nghĩa rất cụ thể cần được bảo toàn (ví dụ, bộ nhớ chia sẻ sao chép trên ghi sau khi tắt). Trên Windows, các quy trình con được tạo ra với CreateProcess() có ngữ nghĩa rất khác (ví dụ: không gian bộ nhớ riêng biệt hoàn toàn từ bố mẹ). Để thực thi các kịch bản và chương trình giống như Unix một cách chính xác, MSYS cần thực hiện rất nhiều công việc mô phỏng để tạo ra các quy trình mới trên Windows hoạt động như fork()/exec() trên Unix. Điều này kết thúc là chậm hơn so với một hệ điều hành cung cấp những cuộc gọi chức năng nguyên bản.

+2

Thực sự không tệ đến 'CreateProcess' trên cửa sổ. Tôi nghĩ Cygwin cố gắng mô phỏng ngã ba trên cửa sổ khiến nó trở nên cực kỳ chậm chạp. Nếu bash không sử dụng fork (tôi đoán nó dùng fork, nhưng tôi không kiểm tra) để bắt đầu quá trình thì cấu hình sẽ chạy nhanh như vậy. Trên hộp i7 của tôi khi tôi đang cố gắng khắc phục vấn đề này, dường như Cygwin có thể ngã ba chỉ một vài lần mỗi giây. Một cách để kiểm tra tốc độ của ngã ba: trong khi (đúng); làm ngày; đã hoàn thành | uniq -c – Pavel

+1

+1 Pavel .. uclinux có cùng một vấn đề nó có thể chạy mà không có một MMU và bất cứ điều gì với ngã ba sử dụng một bản sao đầy đủ rất chậm – user1496062

0

Bạn cũng có thể tắt bất kỳ trình quét vi rút nào bạn đang chạy. Họ sẽ quét lại một tập tin thực thi mỗi khi nó được tải, mà hoàn toàn giết chết hiệu suất kịch bản.

Thậm chí nếu bạn không có phần mềm chống vi-rút đang chạy, đừng quên về Windows Defender. (Bạn cũng có thể muốn vô hiệu hóa Kiểm soát Tài khoản Người dùng, mặc dù tôi không biết tác động nào có trên thời gian tải chương trình.)

0

Rất nhiều truy cập đĩa được tham gia, IMHO làm chậm mọi thứ. Ví dụ cấu hình tạo mã nguồn tạm thời được biên dịch như là một phần của các thử nghiệm mà nó thực hiện. Điều này tạo ra một tập tin đối tượng mà phải được xóa một lần nữa. Những gì tôi làm để tăng tốc cấu hình là trích xuất nguồn mà tôi muốn xây dựng trên một ổ đĩa RAM và cấu hình và biên dịch nó ở đó. Tôi khuyên bạn nên sử dụng ImDisk (http://www.ltr-data.se/opencode.html/#ImDisk) miễn phí.

Các vấn đề liên quan