gccのブートストラップなど、大きなソフトウェアをコンパイルするために、より重要なCPUまたはRAMは何ですか?


11

すぐに新しいコンピュータを購入したいと思っています。コンパイル時間を短縮するために最高のパフォーマンスを発揮するマシンが必要です。

それで、余裕のある最高のGHzを備えたクアッドコアCPUを手に入れようとすべきでしょうか、それともより高速のRAMに投資すべきでしょうか?

どのタイプのRAMを使用すればよいですか?

ソフトウェアの負荷をコンパイルし、数学的シミュレーションを実行して、グラフィックスのパフォーマンスは重要ではありません。

回答:


8

私はどちらとも言いません。むしろ、高速SSDハードドライブを入手してください。もちろん、適切なCPUとRAMの容量も必要ですが、そうです...


2
まあ、私はSSDを入手しませんでしたが、代わりに32GBのRAMを取得し、tmpfsでRAMにすべてをコンパイルしました... SSDよりもさらに高速です=)
Dima

1
まあ、それは同じ考えの一種です:p
Svish

2
同意しません。ラップトップ用のSSDドライブを手に入れましたが、コンパイル速度にほとんど違いがありませんでした。一方、SSDマシンでは、CPU速度がほぼ3倍で、4 GB対6 GBの新しいコンピューターを手に入れたことで、コンパイル速度が約3倍になりました。 anandtech.com/show/2829/25では、SSDを使用した際のコンパイラ速度の顕著な改善は見られませんが、blog.hypercomplex.co.uk / index.php / 2010/06 /…では 23%の改善が見られます。十分なメモリがある場合、コンパイルに伴うディスク使用量は非常に少ないというのは私には当然のことのようです。
クリスドラゴン

1
別の考えは、一部のコンパイラはメモリではなく多くの一時ファイルを使用してコンパイルする可能性があるということです。この場合、SSDまたはRAMディスクが最も役立ちます。ただし、メモリが安価で大容量であり、システムのメモリが不足するとディスクにページングされるため、現代のコンパイラがそのように設計されるとは思いません。XCode 3.2.6(gcc 3または4に基づく)を使用すると、SSDにはほとんどメリットがありませんでした。
クリスドラゴン

SSDは、ファイルのコピー/移動を多用する大規模なプロジェクト/ソリューションに大きな違いをもたらします。私は個人的にはRAMのtmpfsスタイルを使用していませんが、良いことは聞いています。小規模なプロジェクトの場合は、おそらく問題ありません。巨大なものは?不十分な場合があります。
kayleeFrye_onDeck

4

おそらくRAMがあれば、お金の節約になります。コンパイル、特に大規模なアプリケーションは、I / Oを非常に集中的に使用します。RAMを増やすと、ディスクとの間のページング時間を節約できます。今日のほとんどのCPU、特に安価なクアッドコアを使用する場合は、コンパイルに十分なCPUパワーを提供しますが、RAMを使用するとデータのやり取りが容易になります。

第2の考えでは、それは一種の数学シミュレーションとビルドプロセスに依存します。それらは並列化できますか?そうでない場合、新しいIntelチップ(Core i7)はコアごとに非常に高速ですが、コアを追加しても速度を上げることはできません。


1
コンパイルはディスクとどのように関係していますか?
アラッシュ

2

大量のRAMを取得し、一時記憶域にRAMディスクを使用すると思います。これにより、コンパイル速度が劇的に向上します。高速のマルチコアCPUでも問題ありませんが、多くのRAMを利用する方がメリットがあると思います。いくつかのアイデアについては、この記事をご覧ください。ここにいくつかのより多くの情報といくつかがあります。RAMを使用する方がSSDを使用するよりも速いと思いますが、私は間違っている可能性があります。


2

計算では、プロセッサが最も重要です。

コンパイルは、プロセッサとRAMの両方に負荷をかけます。

私はあなたの最も費用対効果の高いソリューションはあなたが余裕のある最高のCPU、そしてできればクアッドコアを入手することだと思います。RAMはそれと同じくらい安い(DDR3は今ではDDR2と同じくらい安い)ので、小さなコインに必要なだけのRAMを簡単に差し込むことができます(16 GBのDDR3が$ 180でneweggにあると...それがいかに安いかを実証しようとしているだけです)。だから私はできる限り高品質のCPUにできる限り投資します。


より高速なCPUを得るためにより多くの費用をかけることは良いアドバイスです。しかし、より多くのコアを取得するためにより多くのお金を費やすことはありません。GCCはすべてのコンパイルを1つのスレッドで行うため、複数のコアを使用することはありません。
アイザック・ラビノビッチ

1
@Isaacはい。ただし、ビルドシステムは通常、たとえばオプションを使用makeして、複数のgccジョブを同時に生成でき-jます。また、llvmは、複数のスレッドを使用して単一のファイルをコンパイルできる、またはコンパイルできると考えています。
Ponkadoodle、2013年

OK @Wallacoloo、あなたがすることができ、時にはあなたが依存関係グラフで平行になっているファイルがあるとき、少し余分な速度を取得します。それでも、ビルドの高速化に関しては、追加のコアはかなりマイナーな要素だと思います。余分なコアは、新しいCPUの中に標準装備されているので、ハードは、伝えるためにやるだけ速いクロックすることにより、最大速度の事を。私が間違っていることを実証したい場合は、-jを付けて、または付けずに大きなコンパイルを試してください。
Isaac Rabinovitch 2013年

2
@IsaacRabinovitch実際、大規模なコードベースでは、それは多くの問題です。私たちのコードベースでは、コンパイル時間はdistccmake -j8(ローカル)からmake -j30(ネットワーク経由で分散)まで) とほぼ直線的に短縮されます
Alex

0

CPUが搭載されたグラフィックスカードはメインCPUの負荷を軽減できるため、グラフィックスが役立ちます。CPUパワーはおそらくRAMよりも重要ですが、両方が優れているほど、より良い結果が得られます。


良い点-プロセスがCUDAコアを使用できる場合のみ。ほとんどの場合は使用できません。
NoBugs 2013年

0

物理的な制限により、コア自体がすぐに速くなることはありません。したがって、より高速なCPUに投資するカスタムシリコンに移行する計画がない限り、並列化が実際に違いをもたらさない限り、多くのソフトウェアが4コアを超えることはほとんどありません。 、システム全体をコンパイルすることが非常に多く、リソースの統計を何度も見に行くので、私はそれを知っています。さらに、開発者が並列化を増やしたいと思ったとしても、それを良い方法で作ることは時々困難です。CPUに投資することは、サービスのパフォーマンスを向上させるか、最初にデータに基づいて計算を行う場合に適しています。それが後で実行動作に影響する場合でも; コンパイルがこれらのパターンのいくつかに従っている場合、議論するのは難しいかもしれませんが、これらはビルドプロセスのいくつかの特別なケースです。そのため、たとえば、グラフィカルコンピューティングでは、より多くのコアが依然として変化をもたらします。その他、できる限りI / Oを増やすためにできることを行います。ディスク、RAM、マザーボードが関係する場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.