1


0

x64ベースのアプリの作成。 本当にポイントはありますか?

明らかに、おそらく私が気付いていない32ビットを超えるいくつかの(または多くの)利点があります。 それで、彼らは何ですか?

私はそれを手に入れていないので、X64 PCではまだ多くのものがサポートされていません。 たとえば、Internet Explorer 8および9の64ビットバージョンはFlashをサポートしていないため、なんとか動作させるとUNが動作し、64ビットIEは現在サポートしていないというメッセージが表示されます。サポートFlashまたはFlashは64ビットブラウザーでは使用できません。

現在、Windows 7を搭載した64ビットのPCを使用しており、32ビットのアプリを作成していますが、それらはすべて完全に動作します(32/64ビットを使用しているかどうかに関係なく表示されるバグはここにありません)。 64ビットシステム用に開発する必要があるのはなぜですか? それらがどのように異なるかはわかりませんが、64ビット用の開発についてもっと知りたい場合、どこから始めることをお勧めしますか?

3 Answer


1


それはあなたがしていることによります。

他に何も話さないスタンドアロンアプリを書いている場合、大量のメモリを必要とせず、x64が提供する余分なレジスタの恩恵を受けられない場合、多くは得られません(肥大化した構造を除く)サイズ:))x64バージョンの作成から。

OTOH、インプロセスで実行されるコードの場合、x64はややバイラルです。 シェル自体は現在64ビットであるため、プラグインする場合は64ビットでもある必要があります。 (または、少なくとも64ビットの世界と通信できるアダプターを提供してください。)その結果、多くの場合、すべてを64ビットとしてコンパイルする方が簡単なので、2つの世界間で呼び出しをマーシャリングする手間がかかりません。

(もちろん、32ビットOS向けの32ビットビルドをまだ持っていますが。)

編集:言い忘れていましたが、マシンの「実際の」ビューを表示する場合は、x64をターゲットにすることも役立ちます。 64ビットWindowsは、互換性の理由から、さまざまなことについて32ビットプロセスに「嘘」をつきます。 あなたは嘘を無効/バイパスできますが、物事を壊すことなくそうします(例: サードパーティのDLL)は扱いにくい場合があり、回避するのが最善です。


1


64ビットアプリケーションで最もよく挙げられる理由は、より多くのメモリへのアクセスです。 1つの明らかな例として、データベースサーバーは、作業しているデータのほとんど(またはすべて)がディスクに保存されるのではなく、メモリで使用できる場合に非常に役立ちます。

また、特に浮動小数点を集中的に使用するアプリケーションの場合は、速度をさらに上げることができます(CPUに多少依存しますが、かなり定期的に3倍の速度向上が見られます)。

ただし、他のアプリケーションの中には、64ビットに移行することでほとんど得られないものや、失われるものもあります。 CPUはまだメモリと同じ帯域幅を持っていますが、すべてのポインターのサイズが2倍になるため、ポインターを大量に使用している場合は、最終的には損失になります。


0


64ビットソフトウェアは、4GBを超えるメモリ(実際には最大3GB)を直接アドレス指定でき、最新のCPUで使用可能な追加のハードウェア(追加のレジスタなど)を使用するため、パフォーマンスが向上します。 これらが64ビットへの移行の2つの主な理由です。

通常、クロスプラットフォームソフトウェアを開発し、コンパイラがすべての64ビット機能を使用します。