要約:コンパイラの最適化とプロセッサ命令セットを利用したいが、移植可能なアプリケーション(別のプロセッサで実行中)が残っている。通常、私は実際に5回コンパイルして、ユーザーに実行させる正しいものを選択させることができます。異なるターゲットアーキテクチャ向けにコンパイルと最適化
私の質問は、実行時にプロセッサが検出され、正しい実行可能ファイルが実行されるように、どのようにしてこれを自動化できますか?
私には、低レベルの数学計算がたくさんあるアプリケーションがあります。これらの計算は、通常、長い間実行されます。
できるだけ多くの最適化、好ましくは(必ずしもサポートされているとは限りませんが)命令セットを利用したいと思います。一方、私はアプリケーションを移植性と使いやすいものにしたいと考えています(私は5つの異なるバージョンをコンパイルしてユーザに選択させたくありません)。
私のコードの5つの異なるバージョンをコンパイルし、実行時に可能な最適化バージョンを動的に実行する可能性はありますか? 5つの異なるバージョンでは、異なる命令セットとプロセッサの異なる最適化を意味します。
私はアプリケーションのサイズは気にしません。
私はLinux上でgccを使用していますが(私のコードはC++です)、IntelコンパイラとMinGWコンパイラをWindowsにコンパイルするのにも興味があります。
実行ファイルは異なるOSで実行する必要はありませんが、自動的に32ビットと64ビットを自動的に選択することで可能なことがあります。
編集:それを行う方法を明確にしてください。小さなコード例や説明のリンクを付けてください。私の視点からは、私が後で持っている任意のランダムなC++プロジェクトに適用可能な超汎用ソリューションが必要です。
私はShuggyCoUkに賞金を割り当てました。彼は注意すべき数多くのポインタを持っていました。私は複数の回答の間でそれを分割するのが好きでしたが、それは不可能です。私はまだこれを実装していないので、質問はまだ開いている!もはや賞金が与えられなくても、回答を追加したり改善したりしてください。
ありがとうございました!
これはAppleが "ユニバーサル"バイナリ(PPC-x86)で行っていることではありませんか? – Edmundo
私はすべての回答が私は+私は良いと思ったいくつかの彼らはすべて私から少し得る:)を確認しました。受け入れのための乾杯。 – ShuggyCoUk
ああ、あなたが私の答えを編集してCWにすることを自由に感じるなら、もっと多くの情報を見つけたら... – ShuggyCoUk