Saya telah menguji berbagai metode untuk meningkatkan waktu yang dibutuhkan untuk mengkompilasi seluruh proyek c ++ saya. Saat ini dibutuhkan ~ 5 menit. Saya bereksperimen dengan distcc, ccache, dan lainnya. Baru-baru ini, saya menemukan bahwa jika saya menyalin seluruh proyek saya ke RAM-drive, dan kemudian mengkompilasi dari sana, itu memotong waktu kompilasi hingga 30% dari aslinya - hanya 1,5 menit.
Jelas, bekerja dari drive RAM tidak praktis. Jadi, apakah ada yang tahu cara saya bisa memaksa OS untuk selalu menyimpan direktori tertentu di-cache ? Saya masih ingin direktori untuk disinkronkan kembali ke disk seperti biasa, tetapi saya selalu ingin salinan data dalam memori juga. Apakah ini mungkin?
EDIT:
Sebagai solusi yang memungkinkan, kami baru saja berpikir untuk meluncurkan daemon yang berjalan rsync
setiap 10 detik atau lebih untuk menyinkronkan disk drive dengan drive RAM. Kemudian kami menjalankan kompilasi dari drive RAM. Ini rsync
sangat cepat, tetapi apakah ini benar-benar bekerja? Tentunya OS bisa berbuat lebih baik ....
time
mengkompilasi dan membagikan hasilnya kepada kami? Itu akan menghilangkan beberapa kontroversi. make clean && /usr/bin/time -v make
(jangan gunakan perintah bash built in time
)
time
built in bash ( help time
) memiliki detail yang jauh lebih sedikit (tidak ada opsi verbose) daripada waktu GNU ( man time
) mengenai I / O, switch konteks, ...