charCで小さな整数を使用することに不利な点はありますか? 占有/メモリの利点以外に利点はありますか?
特に、プロセッサは ( / )charよりも良いか悪いかで整数演算に対処する可能性がありますか?longshortint
これはプロセッサ/システム/コンパイラ固有であることはわかっていますが、一般的なケース、または少なくとも、現在取り組んでいるシステムである 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したがって、クリストフが正しく示唆したように、この話の教訓は次のとおりです。