當我使用MSYS編譯東西時,./configure
步驟可超過make
需要更長的時間。但是,Linux中的相同過程具有快速配置和緩慢構建。這只是MSYS中的一些設置讓我的系統陷入困境?有沒有人有辦法解決嗎?爲什麼配置在MSYS中如此之慢?
14
A
回答
21
典型configure
腳本做一個很多開始小的子進程。在類Unix的操作系統,這與fork()
和exec()
函數調用,它具有需要被保留非常特殊的語義進行(例如,寫入時複製分叉後共享內存)。在Windows上,使用CreateProcess()
創建子進程,它具有非常不同的語義(例如,與父級完全分開的內存空間)。爲了正確執行類Unix腳本和程序,MSYS需要做大量的仿真工作,以便在Windows上創建新的進程,如在Unix上運行fork()/exec()
。這最終會比本地提供這些函數調用的操作系統慢。
0
您可能還需要關閉所有正在運行的病毒掃描程序。他們將在每次加載時重新掃描可執行文件,這絕對會導致腳本性能下降。
即使你沒有反病毒運行後,不要忘了Windows Defender的。 (您可能還需要禁用用戶帳戶控制,雖然我不知道對程序加載時間產生怎樣的影響。)
0
大量的磁盤訪問涉及,這恕我直言會減慢速度了很多。 例如,configure會創建臨時源代碼作爲其執行的測試的一部分進行編譯。這將創建一個必須再次被刪除的對象文件。 我所做的加速配置是提取我想要在RAM驅動器上構建的源代碼,並在其中進行配置和編譯。 我推薦使用免費的ImDisk(http://www.ltr-data.se/opencode.html/#ImDisk)。
相關問題
- 1. 爲什麼互鎖是如此之慢
- 2. 爲什麼我的ViewPager如此之慢?
- 3. 爲什麼瀑布如此之慢?
- 4. 爲什麼videoview如此之慢?
- 5. 爲什麼PTVS如此之慢?
- 6. 爲什麼AWS S3如此之慢? (Swift)
- 7. 爲什麼Seq.iter和Seq.map如此之慢?
- 8. Clojure:爲什麼年齡如此之慢?
- 9. 爲什麼AWS SQS如此之慢?
- 10. 爲什麼teradata fastload如此之慢?
- 11. 爲什麼Apache Beam中的GroupByKey之後的FlatMap如此之慢?
- 12. 爲什麼在ORMLite中DAO方法如此之慢?
- 13. 爲什麼Elasticsearch在Junit測試中速度如此之慢?
- 14. 爲什麼time.sleep()在Windows中如此之慢?
- 15. MySql:爲什麼此查詢運行速度如此之慢?
- 16. 爲什麼此Sybase IQ更新聲明如此之慢?
- 17. 爲什麼此CoreData獲取速度如此之慢?
- 18. 爲什麼Node.js中的MySQL如此之慢?
- 19. 爲什麼virtualbox在docker下運行得如此之慢?
- 20. 爲什麼Powershell中的Get-WMIObject Win32_Process如此之慢以及有什麼選擇?
- 21. 爲什麼硒測試如此緩慢?
- 22. 爲什麼我的NSURLConnection如此緩慢?
- 23. 爲什麼Tk畫布如此緩慢?
- 24. 爲什麼Selenium RC如此緩慢?
- 25. 爲什麼PyPy翻譯如此緩慢?
- 26. 爲什麼後效果如此緩慢?
- 27. 想不通爲什麼MYSQL查詢是如此之慢
- 28. 爲什麼IE開發者工具如此之慢?
- 29. 爲什麼我的hgweb服務器如此之慢?
- 30. 爲什麼我的網站加載時間如此之慢?
對於Window上的'CreateProcess'實際上並不是那麼糟糕。我認爲cygwin試圖在windows上模擬fork,這使得它非常慢。如果bash沒有使用fork(我猜測它使用了fork,但我沒有檢查)來啓動進程,那麼配置會運行得同樣快。在我試圖解決這個「問題」時,在我的i7盒子上,似乎cygwin每秒只能分叉幾次。一種測試fork速度的方法:while(true);做日期;完成| uniq -c – Pavel 2012-08-21 22:07:40
+1 Pavel .. uclinux具有相同的問題,它可以在沒有MMU的情況下運行,並且任何fork都使用非常慢的完整副本 – user1496062 2013-10-26 03:14:40