排他的なC ++コンパイラを使用して既存のコンピュータでカーネルをコンパイルすると、パフォーマンスが向上しますか?

排他的なC ++コンパイラを使用して既存のコンピュータでカーネルをコンパイルすると、パフォーマンスが向上しますか?

私は大学時代から使用されていた古いラップトップの速度を上げるものを探しています。全体的なパフォーマンスを若干向上させるためにカーネルを再コンパイルできると聞きました。しかし、そのラップトップにはまだIntelコンパイラの(今はやや古いようです)学生ライセンスがありました。

理由はよくわかりませんが、Intelコンパイラは実行可能ファイルをGNUバージョンよりはるかに高速にします(Intel CPUで秘密拡張を使用している可能性があります)。この独自のコンパイラでカーネルをコンパイルすると、速度パフォーマンスがさらに顕著に向上するかどうか疑問に思います。

また、全体的なパフォーマンスを向上させるためにシステムの他の主要部分を直接コンパイルできますか?

答え1

私はLinuxカーネルの開発者を代用することはできませんが(そしてこれがあなたが言うLinuxカーネルであるという兆候はありませんが、おそらくそうすると仮定しています)同じコンパイラこれは「ただそう」したいものではありません。

カーネルは複雑なソフトウェアなので、カーネルが正しく実行されていることを確認するには、特定のツールチェーンを使用してカーネルを開発してテストすることが重要です。

新しいバージョンのコンパイラには、コンパイルされたコードに微妙な違いが生じる可能性がある変更があります(または新しいバージョンではありません)。開発者は、導入された違いにより、システムの最も重要なソフトウェア部分(カーネル)が誤動作しないようにする必要があります。

さらに、カーネルソースコードは標準に準拠したCコードではなく、LinuxカーネルはGCCツールチェーンにのみ存在する拡張を使用します(または少なくとも使用するために使用されます)。私読むclangこのコンパイラ(現在、多くのOpenBSDシステムのデフォルトコンパイラ)でコンパイルしようとすると、少なくとも初期の問題がありました。ここに移動することは、iccより大きな進展になる可能性があります。

OpenBSDでは、ユーザーも落胆開発者がサポートする汎用カーネルからコンポーネントを追加または削除すると、デバッグ失敗がより困難になるため、デフォルトの個々のコンパイラフラグの変更を含むカスタムカーネルをコンパイルします。

一言でお勧めしますいいえを試してくださいicc


特定のアプリケーションが遅く実行されている場合は、そのアプリケーションを再コンパイルしてicc速度が速くなるかどうかを確認できます。オープンソースコードのコンパイルに関する私の経験によると、icc一部のアプリケーションはオープンソースのコンパイラツールチェーン用に特別に書かれているようです(開発者が使用しているため)、Intelコンパイラできちんとコンパイルされていません。

他の提案としては、ハードドライブをより高速なドライブにアップグレードするか、システムにRAMを追加することがあります。この改善により、「より良い」コンパイラで再コンパイルするよりも全体的なパフォーマンスが向上します。、特にI / Oバインドされたアプリケーションを使用する場合(アップグレードされたハードドライブの利点を享受することができます)

関連情報