メモリが問題ではないと仮定すると、64 ビット OS をターゲットにすると、C/C++ Windows コンソール アプリケーションの実行が速くなりますか?
更新: いくつかのコメント/回答によってプロンプトが表示され、アプリケーションには統計アルゴリズム (線形代数、乱数描画など) が含まれます。
メモリが問題ではないと仮定すると、64 ビット OS をターゲットにすると、C/C++ Windows コンソール アプリケーションの実行が速くなりますか?
更新: いくつかのコメント/回答によってプロンプトが表示され、アプリケーションには統計アルゴリズム (線形代数、乱数描画など) が含まれます。
元の質問ではなく、主に編集に返信します。統計と(特に)線形代数に重点を置いた1つのアプリケーションを64ビットコードとして実行するように移植しました。そのコードの場合、作業は最小限で済み、速度は約 3:1 向上しました。
多くの場合、そうではないという考えの大部分は、移植が容易ではないコードを所有し、購入を続けることが良い考えである理由を顧客に伝えるために最善を尽くしている企業から(通常は間接的に)もたらされていると思います彼らのプログラムは、まだ 32 ビット コードですが。私が移植した (またはほとんどの場合「再コンパイルした」) コードのうち、64ビット コードほど遅いコードはなく、ほとんどのコードは少なくとも少しは速くなりました。
答えは多分です。測定する必要があります。
64 ビット ターゲットを使用すると、より多くのレジスタを使用できるため、メモリへのアクセスが少なくなるため、実行が高速になります。
一方、64 ビットのターゲットを使用すると、すべてのポインタとアドレスが強制的に 64 ビットになり、メモリ フットプリントが拡大し、実行が遅くなります。
答えは「たぶん」です。
アプリケーションに大幅な変更を加えているため、別のプラットフォームをターゲットにすると、アプリケーションのパフォーマンスに確実に影響します。タイプ、操作、および対話するオペレーティングシステムのサイズのセマンティクスが異なります。
これらの要因やその他の多くの要因により、アプリケーションのパフォーマンスが確実に変化します。それが微妙か、巨大か、より良いか、より悪いかなど…あなたが書いているアプリケーションのタイプに非常に特有です。詳細がなければ、ここで一般的な答えを出すことはできません。
実行時間のほとんどが計算に費やされている場合は、メリットが得られる可能性があります。ほとんどの場合、これは正しくありません。原子炉のモンテカルロ シミュレーションやレイトレーシング レンダリングなどを行っている場合、おそらく大きなメリットが得られるでしょう。私の SWAG は「あまり役に立たない」
他のすべてが等しい場合 (可能性は低い)、64 ビットの余分なデータ サイズ (ポインターを処理するときに移動するデータが 2 倍になる) は、速度が遅くなると予想されます。
しかし、他の要因 (WOW オーバーヘッドなど) が物事を支配する可能性があります...
唯一の方法は、対象のハードウェアでアプリケーションをテストすることです。
遅くなる可能性があります - CPU キャッシュのサイズを効果的に半分にしただけです
もちろん、Intel と AMD のエンジニアはこれを知っているので、メモリ マネージャーは、下位 32 ビットのみが使用される 64 ビット幅のポインターと整数の影響を軽減するために多くの作業を行います。