char
Cで小さな整数を使用することに不利な点はありますか? 占有/メモリの利点以外に利点はありますか?
特に、プロセッサは ( / )char
よりも良いか悪いかで整数演算に対処する可能性がありますか?long
short
int
これはプロセッサ/システム/コンパイラ固有であることはわかっていますが、一般的なケース、または少なくとも、現在取り組んでいるシステムである 32 ビット Windows と Solaris の一般的なケースでの回答を期待しています。 . また、オーバーフロー/ラップアラウンドの問題などは既に対処されていると想定しています。
stdint.h
更新: Visual Studio 6.0 には、Christoph の提案どおりの機能は実際にはありません。少数のスタック ループを使用した Windows (VS 6.0、デバッグ ビルド、32 ビット) での小さなベンチマークでは、int
とlong
同様のパフォーマンスが得られ、 char
. Linux で gcc を使用して同じテストを実行すると、同じように pegsint
と同様に実行long
され、どちらも よりも高速ですchar
が、違いはそれほど顕著ではありません。
補足として、私はあまり時間をかけて調べていませんが、私が見つけた VS 6.0の最初の実装(stdint.h
ウィキペディア経由) は、少なくとも私のテストでは遅いように見えますが、uint_fast8_t
として定義されています。unsigned char
したがって、クリストフが正しく示唆したように、この話の教訓は次のとおりです。