32 ビットおよび 64 ビット・アプリケーションの開発

XL C/C++ を使用して 32 ビットと 64 ビット・アプリケーションの両方を開発できます。 このセクションでは、参照情報と、C および C++ プログラムを 32 ビットから 64 ビット・モードに移行する上での、移植性に関するその他の考慮事項を説明します。

移植を行う際、変更点がハードウェアとオペレーティング・システムのみであるなら、 それは純粋な「移植」と言えます。 ただし、Linux に移行する過程で、32 ビット・アプリケーションを 64 ビット・ プログラミング・モデルに変更する場合は、この行いはもはや純粋な「移植」ではなく、 ある種の開発活動であることを意味します。 以下の特徴のいずれかを有する 32 ビット・アプリケーションは、64 ビット環境に 移植する際に変更を必要とする可能性が非常に高いです。

64 ビット・モードで開発すると、アプリケーションはより新しくて速い 64 ビット・ハードウェアとオペレーティング・システムを利用することが 可能で、データベース・アプリケーションや科学計算アプリケーションなどの、 大規模で複雑なメモリーを大量に使用するプログラムのパフォーマンスを向上することができます。 データベース・アプリケーション、Web 検索エンジン、科学計算アプリケーションなどの アプリケーションで、32 ビットのアドレス・スペースによりパフォーマンスに制限が課せられているものは、 多くの場合、64 ビット・モードに移行することで利便性が向上します。 入出力によりパフォーマンスに制限が課せられているアプリケーションも、64 ビット・モードにすることで、 データをディスクに書き込まずにメモリーに保持することができるため、 より高いパフォーマンスを実現できます。 これは、通常メモリー・アクセスの方が、ディスク I/O よりも速いためです。

64 ビット・マシンを使用することで、パフォーマンスに最も大きく貢献する点は、 おそらく大規模な問題を物理メモリー内で直接処理できるようになる点でしょう。 しかし、いくつかのアプリケーションは、64 ビット・モードで再コンパイルしたとき よりも、32 ビット・モードでコンパイルした方が良いパフォーマンスを示します。 この理由としては、以下のものが存在します。

64 ビット・アプリケーションの他の欠点としては、より大きいレジスターを保持するために より多くのスタック・スペースを必要とする点があります。 ポインター・サイズが大きくなるため、アプリケーションのキャッシュ・フットプリントが大きくなります。 64 ビット・アプリケーションは、32 ビット・プラットフォーム上では実行できません。

64 ビット・プログラムのパフォーマンス上のマイナス影響を補正するには、次の方法があります。

良い形式で書かれたコードは、64 ビット・プログラミング・モデルに移行すれば 最小限の修正作業とデバッグで正常にコンパイルおよび実行できる可能性が高いです。 「良い形式」という表現は、言語標準に準拠し、 良いプログラミング慣習に従っていることを意味します。 64 ビット・プログラミング・モデルへ移行することに当てはめていうと、 「良い形式」とは、コードが特定のバイト・オーダーや外部データ・フォーマットに依存していないこと、 および関数プロトタイプ、適切なシステム・ヘッダー・ファイル、および システム派生のデータ型を使用していることも含まれます。 IBM Copyright 2003