ILP32 データ型モデルでは実際には整数とロング整数が区別されないため、ほとんどの場合、既存のコードでは区別なしに整数とロング整数が使用されています。整数とロング整数が区別なしに使用されているコードは、修正して ILP32 と LP64 両方のデータ型モデルの条件に準拠するようにしてください。ILP32 データ型モデルでは integer と long はともに 32 ビットですが、LP64 データ型モデルでは long は 64 ビットです。
次の例を考えてみましょう。
int waiting; long w_io; long w_swap; ... waiting = w_io + w_swap; % warning: assignment of 64-bit integer to 32-bit integer
さらに、long または unsigned long の大きな配列は、int または unsigned int の配列と比較して、LP64 データ型モデルでパフォーマンスを顕著に低下させる可能性があります。long または unsigned long の大きな配列は、キャッシュミスの大幅な増加や消費メモリーの増加の原因になることもあります。
このため、アプリケーション目的のために int が long と同程度に機能する場合は、long ではなく int を使用してください。
この引数は、ポインタの配列の代わりに int の配列を使用する場合にも適用されます。一部の C アプリケーションは、LP64 データ型モデルへの変換後に、深刻なパフォーマンスの低下を招きます。これは、それらが多数の大きなポインタ型配列に依存しているためです。