複数のプログラムでかなりの時間を費やした結果、プラットフォームによっては、一部のプラットフォームではリソースが非常に限られているため、大幅に増加しています。私は通常、これらの型の点で大規模なマップと行列を格納するので、int32からint16またはfloatからdoubleへの切り替え(実際にはサイズが異なる場合)は、私の使用量をほぼ半減させます。など したがって、私はちょうど追加した再定義:これは私はすぐに私のプログラムでは、すべての重要なプリミティブ型を調整することができますRAM使用量の迅速な変更、より良い可読性、および(場合によってはパフォーマンスの改善のための)プリミティブ型の再定義
typedef double Float;
typedef int32_t Int;
typedef uint32_t UInt;
。プログラムの私の整数は実際には2バイト整数のサイズを超えないので、int16からint64のいずれかを使用しても問題はありません。
さらに、「uint32_t」の代わりに「Int」があるだけで読みやすいようです。そして、いくつかのケースでは、プリミティブ型のサイズを小さくしてサイズを大きくすることで、パフォーマンスの変化を観察しました。
私の質問です:私は単に欠場する欠点はありますか?私はまだこの話題について何も見つけることができませんでしたので、もし私もそれを見逃してしまったら、そこに私を導いてください。コードは主に私のためのものですが、他の人がそれを見るかもしれませんが、私は個人的に、あるいは適切な文書ですべての場合を与えます。
編集:過去の間違いで申し訳ありませんが、私は実際にtypedefを使用します。
:小さなタイプを使用するには
g++ -o test test.cpp -DLARGE
をtypedefに。境界を確認する場合は、numeric_limitsを使用し、ハードコードしないでください(一般的には常に良い)。小さい方にタイプを変更すると、境界も変更されます。 – Hayt
@Haytコメントありがとうございます。はい、一般的に数値制限を使用することを考えました。しかし、私が手に入れる最大の整数は約2000〜3000であり、私のプログラムでこれを超える方法はありません。浮動小数点の場合も同様です。 – phil13131
小さいタイプの境界を決して超えない場合は、無条件で使用しない理由がありますか?また、近代的なアーキテクチュアにInt型を秘密裏に16ビットしか持たないという考えは私を恐れている。 –