2

私の頭の中の小さな最適化のバグは、依存しているアンマネージDLLのx64リリースのために、既存のx86 C#アプリケーションをx64に移植する必要があることを教えてくれます。答えはおそらくそれを実行し、テストして何が起こるかを確認することですが、一般的に期待されるメリットを確認したいと思いました。2〜4年前に、x64CLRの速度がx86CLRよりも遅いと不満を言う投稿をたくさん見つけました。

x64コードで高速化が期待できる領域は何ですか?2 GBを超えるメモリが必要な場合を除いて、移植する価値はありますか?私のコードは主にネットワーク指向で、中規模のバイト配列と暗号化アルゴリズムを扱っています。

4

1 に答える 1

1

この質問に対する最も簡単な答えは、32ビットと64ビットのプロファイルを作成して比較することです。ただし、暗号化アルゴリズムを使用しているとおっしゃっていたので、十分な頻度で使用している場合は、64ビットの使用を検討することを強くお勧めします。

暗号化アルゴリズムは、32ビットより大きい値に対して整数の算術演算や論理演算を日常的に実行します。これは、64ビットコードではるかに高速になります。さらに、通常のコードよりも、プロセッサの拡張レジスタセットを利用できることがよくあります(ただし、特定のスーパースカラー/キャッシュの最適化では、これがある程度行われている場合があります)。

結局、特定の状況でテストする以外に、どちらが優れているかを判断する方法はありませんが、使用している暗号化ライブラリに64ビットバージョンがある場合は、試してみる価値があると思います。

于 2013-02-10T08:49:23.350 に答える