10

おそらく、ここで x64 プラットフォームの重要なポイントを見逃しているのですが、x64 アプリケーションは、大容量のメモリ、大きなポインター、またはその他の要求が厳しい場合にのみ (x64 OS およびハードウェア上で) x86 バージョンよりも優れたパフォーマンスを発揮するという認識でした。要因が関与していた.

ただし、標準の x86 バージョンに加えて、x64 バージョンのインストーラーを提供するいくつかの小さなアプリケーションに気付き始めました。x86 は WoW を使用して Windows x64 で問題なく動作するため、自分のアプリケーションの x64 コンパイル バージョンをリリースするメリットはありますか? 私の考えでは:

長所:

  • 潜在的に高いパフォーマンス (ただし、どのような条件で)

短所:

  • 作成/サポートする追加ビルド
  • x86 ターゲットには存在しない x64 ターゲットの潜在的なバグ
  • ベンダー/OS DLL の x64 バージョンへの依存、異なるインストール チェックリストの必要性、追加のトラブルシューティングの複雑さの導入

x64 でコンパイルされたバージョンのアプリを追加することを再考せざるを得ない理由は何ですか?

4

7 に答える 7

4

x64 バージョンをコンパイルおよびデバッグする別の潜在的な理由は、x86 バージョンの隠れたバグが明らかになる可能性があることです。たとえば、これにより、32 ビット整数と (現在は) 64 ビット ポインターとの間の不適切な変換が明らかになる可能性があります。これにより、将来的に x64 をサポートできるようになります。

ただし、アプリケーションが 64 ビット整数、追加の CPU レジスタ、より大きなメモリ空間 (3.5Gb を超える)、またはデバイス ドライバーの実装の恩恵を受ける場合を除き、32 ビット アプリケーションのままで問題ありません。すべての主要なオペレーティング システムは、x32 と x64 の両方のアプリケーションを同時に実行することをサポートしているため、64 ビットのみのアプリケーションへの大きなプッシュはありません。

ところで。.NET ベースのアプリケーションは、コードを変更しなくても 64 ビット システムで実行できるという利点を自動的に得ます。追加のテストは必要ありません。

于 2010-01-02T07:47:45.357 に答える
3

潜在的なパフォーマンスの向上は、主に 64 ビット整数の使用 (私のマシンの x64 ビルドでは、同じマシンの x86 よりも約 4 倍高速) と、x64 をサポートする CPU に一部の CPU 機能が普遍的に存在するとコンパイラが想定している可能性があるという事実に関連しています。 、SSE2 など。これにより、コードがより最適化される可能性があります。

多くのアプリケーション、特に小さなアプリケーションでは、64 ビット クリーンであることはそれほど難しくありません。通常、説得力のある理由はほとんどありません。しかし、一部のプラットフォームでは、32 ビット サポートがデフォルトで 64 ビット バージョンにインストールされません (FreeBSD には、そうするように明示的に指示する必要があると思いますが、それについては間違いがあるかもしれません)。

于 2010-01-02T05:13:59.347 に答える
1

パフォーマンス; x86_64は、すでに述べた理由により、x86よりもわずかに高速です(これはコンパイラーによっても異なります)。また、非常に巨大なデータセットをサポートする方が簡単ですが、もちろん、多くのアプリケーションがそこに行く必要はありません。

確かにLinuxとOSXでは、本当にx86_64をサポートする必要があります。これをOSXの64ビットブラウザに入力しています。隅にあるLinuxボックスもほぼ64ビットです。64ビットWindowsはもう少し問題ですが、それは(ドライバーとともに)今や来ています。

于 2010-01-02T06:54:08.147 に答える
1

これは、多くの場合、客観的な技術的推論ではなく、人的要因に基づいています。64 ビットは最新かつ最高であり、32 ビットよりも優れている必要があります。顧客がそれを望むなら、顧客は常に正しい。目標は、Windows でプロセス リストを表示したときに、どのアプリの横にも *32 が表示されないようにすることであると、Windows ユーザーと話しました。

多くの場合、64 ビット オペレーティング システムを使用していて、自分のコンピューターでソフトウェアが確実に動作することを確認したいだけで、互換性に関する混乱がこれを助長しています。平均的な人が 64 ビット OS 上の 32 ビット プロセス間の技術的な境界線を理解することを期待するのは非現実的です。パッケージに明示的に記載されていない限り、新しいソフトウェアを購入するお客様にとって、混乱や懸念のポイントになる可能性があります。多くの場合、この理由で 64 ビットが言及されています。通常、これは実際には 64 ビット互換性のみを意味します。

現在、いくつかの 64 ビット アプリケーション (フラッシュ プレーヤーと Google Earth が私のリストのトップ) があり、すぐに提供されることはありません。

于 2010-01-02T17:36:09.153 に答える
1

理由の 1 つは、シェル拡張機能の作成など、64 ビット アプリとの統合です。64 ビット プロセスは 32 ビット DLL を直接ロードできないため、自分のプロセスも 64 ビットにする必要があります。

于 2010-01-02T17:39:37.793 に答える
1

多くの s を使用し、WOW がもちろんパフォーマンスのマイナー ヒットを意味する場合、プログラムは恩恵をlong long受けます (CPU にはこのような理由で互換モードがあるため、非常にマイナーですが)...

Windows での 32 ビット プログラムのサポートは将来 (ゆっくりではありますが) 低下するため、あと 1 年か 2 年後には、なぜ 32 ビット アプリケーションをデプロイする必要があるのか​​疑問に思うかもしれません...

また、アプリケーションの 64 ビット ビルドは、実際には 32 ビット ビルドよりもはるかに最適化できます。これは、64 ビットでは、SSE2 などのかなりの数の機能が保証されているためです。

于 2010-01-02T05:12:15.933 に答える
0

まだ言及されていない要因の 1 つ: WoW64 は Server Core のオプション機能になりました。もちろん、アプリケーションをサーバー システムで実行する必要がある場合にのみ問題になります。

同様に、Windows PE、Windows RE などには、Wow64 が含まれていません。

于 2015-04-02T23:29:13.000 に答える