任何人都可以解釋爲什麼在Linux啓動gcc或javac後,一段時間的不活動,他們需要一段時間才能啓動。隨後的調用速度更快。有沒有辦法確保始終快速啓動? (這個要求可能看起來很奇怪,但在我的情況下是必要的)。順便說一句。gcc或javac在第一次啓動時很慢
1
A
回答
2
最有可能的情況是代碼頁出錯的時間。如果您真的需要,有幾種方法可以避免這種延遲。最簡單的方法是定期運行gcc
。另一種方法是將gcc
安裝到RAM磁盤上。
另一種方法是列出涉及哪些文件,然後編寫一個簡單的程序將所有這些文件鎖定到內存中。你可以使用類似的東西:strace -f gcc *rest of gcc command* 2>&1 | grep open | grep -v -- -1
使用GCC命令行,這是你如何使用GCC的典型。
你會發現在那裏打開庫和二進制文件。在文件中製作完整列表。然後編寫一個程序,調用mlockall(MCL_FUTURE)
然後從文件中讀取文件名。對於每個文件,mmap
它進入內存並讀取每個字節。然後讓程序永久睡眠(或直到死亡)。
這會強制每個文件在內存中的每個頁面的作用。您應該檢查所有這些文件的總大小,並確保它不是您實際擁有的內存量的重要部分!
順便說一下,曾經有一種叫做sticky bit的東西做了這樣的事情。如果您的平臺支持它,只需在所有使用的文件上進行設置即可。 (雖然它傳統上導致文件被保存爲交換,這在現代系統上不會使事情變得更快)。
相關問題
- 1. C#WPF真的很慢啓動第一次
- 2. 第一次啓動圖片選取器很慢
- 3. IIS第一次啓動太慢
- 4. scipy第一次啓動緩慢
- 5. 第二次活動緩慢啓動
- 6. RandomAccessFile第一次訪問速度很慢
- 7. 春季第一次請求很慢
- 8. 第一次點擊按鈕很慢
- 9. 第一次播放聲音時AVAudioPlayer緩慢啓動
- 10. 剃鬚刀視圖在第一次加載時很慢
- 11. Jodatime的LocalDateTime在第一次使用時很慢
- 12. WCF序列化在第一次調用時很慢
- 13. 第一次啓動
- 14. 在第一次啓動小部件時啓動活動
- 15. 僅在應用程序第一次啓動時啓動活動
- 16. 第二次啓動時停止第一次倒計時
- 17. 啓用IIS 7.5自動啓動後,第一個請求仍然很慢
- 18. PagerAdapter在第一次轉換時變慢
- 19. 休眠啓動很慢
- 20. 如何在第一次啓動應用程序時使Activity只啓動一次?
- 21. 第一次啓動Cassandra時出錯
- 22. 第一次啓動時設置屏幕
- 23. 僅在第一次啓動時解析XML一次
- 24. Cookie在第一次啓動時放慢我的網站,總是這樣?
- 25. 第一次啓動時的語言未被設置或使用
- 26. 休眠第一次啓動使應用變慢
- 27. 第一次調用pytz.timezone在virtualenv中速度很慢
- 28. 第一次drawImage對新畫布的調用在IE9上很慢
- 29. sliksvn第一次犯第二次緩慢
- 30. 第二次啓動時停止第一個div的動畫