0

複数のプログラムにかなりの時間を費やした後、プラットフォームによっては、一部のプラットフォームではリソースが非常に限られているため、RAM の使用量を大幅に下げる必要があることがわかりました。私は通常、これらの型の観点から大きなマップと行列を格納するため、int32 から int16 に、または float から double に切り替えると (実際にはサイズが異なる場合)、使用量がほぼ半分に簡単に削減されます。したがって、次のように再定義を追加しました。

typedef double Float;
typedef int32_t Int;
typedef uint32_t UInt;

これにより、プログラム内のすべての重要なプリミティブ型をすばやく調整できます。プログラム内の私の整数は実際には 2 バイト整数のサイズを超えていないことに注意してください。そのため、int16 から int64 のいずれを使用しても問題はありません。

さらに、「uint32_t」の代わりに素敵な「Int」をそこに置く方が少し読みやすいようです。また、場合によっては、プリミティブ型のサイズを小さくしたり大きくしたりして、パフォーマンスの変化を観察しました。

私の質問は: 私が見逃している欠点はありますか? SOでこのトピックについてはまだ何も見つけられなかったので、見逃した場合はそこに導いてください。コードは主に私のためのものであり、他の人が見るかもしれませんが、すべての場合、私が個人的に、または適切なドキュメントと共に提供します。

編集:過去の間違いで申し訳ありませんが、私は確かにtypedefを使用しています。

4

1 に答える 1

2

typedef int32_t Int;悪くはありませんが、良くもtypedef double Float;ありません。紛らわしいからです: aFloatは実際には double です!?

プリプロセッサを使用して、大きな型用と小さな型用の 2 つの型のセットを定義しないでください。

#ifdef LARGE
typedef int32_t Int;
typedef double Real;
#else
typedef int16_t Int;
typedef float Real;
#endif
void f() {
    cout << sizeof(Int) << endl;
    cout << sizeof(Real) << endl;
}

大きな型を使用するには:g++ -o test test.cpp -DLARGE

小さい型を使用するには:g++ -o test test.cpp

于 2016-09-02T08:52:29.313 に答える