Apa yang lebih penting CPU atau RAM untuk mengkompilasi perangkat lunak besar, misalnya bootstrap gcc?

11

Saya ingin segera membeli komputer baru, dan saya ingin mesin untuk kinerja terbaik untuk waktu kompilasi yang cepat.

Jadi apakah saya harus peduli untuk mendapatkan CPU quad-core dengan GHz tertinggi yang mampu saya beli, atau haruskah saya berinvestasi ke dalam RAM berkecepatan lebih tinggi?

Apa rekomendasi Anda untuk jenis RAM apa yang harus saya gunakan?

Kinerja grafis tidak masalah, mengumpulkan banyak perangkat lunak & menjalankan simulasi matematika.

Dima
sumber

Jawaban:

8

Saya akan mengatakan tidak. Alih-alih mendapatkan hard drive SSD cepat . Tentu saja Anda membutuhkan CPU yang tepat dan jumlah RAM juga, tapi ya ...

Svish
sumber
2
Yah, saya tidak mendapatkan SSD, sebaliknya saya mendapat 32GB RAM dan mengkompilasi semuanya dalam RAM pada tmpfs .... bahkan lebih cepat daripada SSD =)
Dima
1
Nah, itu ide yang sama: p
Svish
2
Saya tidak setuju. Saya mendapatkan drive SSD untuk laptop saya dan itu membuat sedikit perbedaan dalam kecepatan kompilasi. Di sisi lain, mendapatkan komputer baru dengan hampir tiga kali lipat kecepatan CPU dan hanya 4GB vs 6GB pada mesin SSD membuat kompilasi hampir 3 kali lebih cepat. anandtech.com/show/2829/25 tidak menemukan peningkatan kecepatan kompiler yang terlihat dengan SSD sementara blog.hypercomplex.co.uk/index.php/2010/06/… menemukan peningkatan 23%. Tampaknya logis bagi saya bahwa jika Anda memiliki cukup memori, kompilasi melibatkan penggunaan disk yang sangat sedikit.
Chris Dragon
1
Pemikiran lain adalah mungkin beberapa kompiler menggunakan banyak file temp untuk mengkompilasi daripada memori, dalam hal ini SSD atau ramdisk akan sangat membantu. Namun, saya tidak akan mengharapkan kompiler modern direkayasa seperti itu sekarang karena memori murah dan besar dan sistem menangani paging ke disk ketika kehabisan. Menggunakan XCode 3.2.6 (berdasarkan gcc 3 atau 4), SSD memiliki sedikit manfaat.
Chris Dragon
SSD membuat perbedaan besar pada proyek / solusi besar yang sangat memanfaatkan penyalinan / pemindahan file. Saya belum pernah menggunakan gaya RAM tmpfs, secara pribadi, tetapi saya telah mendengar hal-hal baik tentang itu. Untuk proyek yang lebih kecil, mungkin baik-baik saja. Untuk yang besar? Itu mungkin tidak cukup.
kayleeFrye_onDeck
4

Mungkin RAM akan memberi Anda keuntungan yang lebih besar. Kompilasi, terutama aplikasi besar, sangat intensif I / O, dan memiliki lebih banyak RAM berarti Anda dapat menghemat lebih banyak waktu paging ke dan dari disk. Sebagian besar CPU saat ini, terutama jika Anda menggunakan quad-core yang murah, akan memberikan banyak daya CPU untuk kompilasi Anda, tetapi memiliki RAM akan membantu dengan data bolak-balik.

Pada pemikiran ke-2, itu semacam tergantung pada simulasi matematika Anda dan proses membangun. Apakah mereka dapat diparalelkan? Jika tidak, menambahkan lebih banyak inti tidak akan benar-benar melakukan apa pun untuk mempercepatnya, meskipun chip Intel baru (Core i7) cukup cepat pada basis per-inti.

Jimmy
sumber
1
apa hubungannya kompilasi dengan disk?
Arash
2

Saya akan mengatakan mendapatkan banyak dan banyak RAM dan menggunakan ramdisks untuk penyimpanan sementara. Ini secara dramatis akan meningkatkan kecepatan kompilasi. CPU multi-core yang cepat akan baik-baik saja, tapi saya pikir Anda akan mendapat manfaat lebih banyak dari ram. Lihatlah artikel ini untuk beberapa ide. Berikut ini beberapa informasi lebih lanjut dan beberapa lagi di sini . Saya pikir menggunakan RAM akan lebih cepat daripada menggunakan SSD, tapi saya bisa saja salah.

AndrejaKo
sumber
2

Untuk perhitungan Anda, prosesor Anda adalah yang paling penting.

Kompilasi akan menekankan prosesor dan RAM Anda.

Saya pikir solusi Anda yang paling efektif adalah mendapatkan CPU terbaik yang Anda mampu, dan lebih baik Quad core. Dengan RAM semurah itu (DDR3 sekarang semurah DDR2), Anda dapat dengan mudah memasukkan RAM sebanyak yang Anda butuhkan untuk koin kecil (16 GB DDR3 untuk $ 180 pada newegg ... Saya menyadari bahwa itu berlebihan, hanya mencoba menunjukkan betapa murahnya itu). Jadi saya akan berinvestasi sebanyak yang saya mampu pada CPU berkualitas mungkin.

Flynismo
sumber
Menghabiskan lebih banyak uang untuk mendapatkan CPU yang lebih cepat adalah saran yang bagus. Tetapi tidak menghabiskan lebih banyak uang untuk mendapatkan lebih banyak core. GCC melakukan semua kompilasi dalam satu utas, sehingga tidak pernah menggunakan lebih dari satu inti.
Isaac Rabinovitch
1
@Isaac Ya, tetapi sistem build biasanya dapat menelurkan banyak pekerjaan gcc secara bersamaan, misalnya makedengan -jopsi. Juga, saya percaya llvm dapat atau akan dapat mengkompilasi file tunggal menggunakan beberapa utas.
Ponkadoodle
@ Wallalloloo OK, Anda kadang - kadang bisa mendapatkan kecepatan ekstra ketika Anda memiliki file yang paralel dalam grafik dependensi. Meski begitu, saya percaya bahwa core ekstra adalah faktor yang cukup kecil dalam hal mempercepat pembangunan. Sulit untuk mengatakan, karena core ekstra adalah fitur standar dalam CPU baru yang melakukan mempercepat hanya dengan clocking lebih cepat. Jika Anda ingin menunjukkan bahwa saya salah, coba lakukan kompilasi besar dengan dan tanpa -j.
Isaac Rabinovitch
2
@IsaacRabinovitch Sebenarnya pada basis kode besar itu penting banyak . Pada waktu kompilasi basis kode kami berkurang hampir secara linear dengan distcc( make -j8(lokal) hingga make -j30(didistribusikan melalui jaringan))
Alex
0

Grafik yang baik dapat membantu karena kartu grafis dengan cpu di atasnya dapat mengurangi beban pada cpu utama. Kekuatan CPU mungkin lebih penting daripada RAM, tetapi semakin baik keduanya semakin baik.

jer.salamon
sumber
Poin bagus - hanya jika prosesnya bisa menggunakan inti CUDA, yang kebanyakan tidak.
NoBugs
0

karena keterbatasan fisik, inti itu sendiri tidak akan menjadi jauh lebih cepat dalam waktu dekat, jadi kecuali Anda berencana untuk beralih ke silikon kustom berinvestasi pada cpu yang lebih cepat tidak akan menyelesaikan masalah Anda kecuali paralelisasi benar-benar akan membuat beberapa perbedaan tetapi cara banyak perangkat lunak sulit mendapatkan lebih dari 4 core Saya mengetahuinya karena saya sangat sering mengkompilasi seluruh sistem saya dan berkali-kali saya melihat statistik sumber daya. Selain itu, bahkan jika pengembang ingin meningkatkan paralelisasi, kadang-kadang menantang untuk membuatnya dengan cara yang baik. Berinvestasi pada cpu's baik untuk meningkatkan kinerja layanan atau jika Anda melakukan perhitungan berdasarkan data; bahkan jika itu akan mempengaruhi perilaku eksekusi nanti; jika kompilasi Anda mengikuti beberapa pola ini maka mungkin akan lebih sulit untuk dibahas tetapi itu adalah beberapa kasus khusus untuk proses pembangunan; itu sebabnya misalnya, pada komputasi grafis lebih banyak core masih membuat beberapa perbedaan. Selain itu yang melakukan apa yang Anda bisa untuk meningkatkan I / O sebanyak mungkin, itu bisa melibatkan disk, rams, dan motherboard

lemos jeferson
sumber