web-dev-qa-db-ja.com

ビルド済みのバイナリパフォーマンスのコンパイルと使用?

使用する実際のマシン用のソフトウェアコンポーネントのソースを手動でコンパイルした方が、おそらく多くの異なるアーキテクチャー用の別のプラットフォームでソースをコンパイルした場合と比較して、パフォーマンスが向上します(高速)。ダウンロードしたソースをコンパイルしていくつかの良い結果が得られました。これは、ソフトウェアの更新でよくある、コンパイル済みのバイナリをダウンロードする代わりに、それをコンパイルしたことが原因であるのかと思います。

11
Niklas

多くの場合(ほとんどではないにしても)、はい。これは、コンパイラが特定のCPUと環境に最適化されたネイティブコードを生成できるためです。コードはより「ターゲットを絞った」ものです。

8
epistemex

ソースからコンパイルすると、特定のプラットフォームに合わせてコンパイラフラグを設定できるという利点があります。正確に同じ設定でコンパイルされたパッケージをダウンロードしても違いはありませんが、設定をデフォルトから変更すると、大幅に改善できます。

たとえば、ダウンロード用に提供されたバイナリがデバッグ用にコンパイルされている場合(意図的または誤って)、より積極的な最適化をオンにすると、ほぼすべての状況でパフォーマンスが向上します。一方、コンパイルされたコードが最大に最適化されている場合、違いは見られません。

7
dasblinkenlight

これは実際には、使用される2つのコンパイラとコンパイラフラグに依存します。通常、ローカルマシンのコンパイラとフラグの設定は、正しく構成されている場合、特定のマシンにより適しています。

ただし、たとえば、ビルド済みのバイナリが、次のコンパイラと比較して、はるかに優れた最適化コンパイラ(または、特定のコードに合わせてフラグを調整し、システムに適した運で調整された特別なベンチマーク)でビルドされた場合あなたのシステムでは、あなたのシステム上にあるどんなコンパイラーでも実際に悪いパフォーマンスを生み出す可能性があります。

1
hotpaw2