経緯
for分のindex変数、どうせ0~255しか使わないし、byte型にした方が効率的ではと思い調べてみました。
注意
C#上での話です。他の言語では多少異なる点があるかもしれません。
結論
int型で良いです。byteはかえって非効率になりそうです。
まとめ
int型の方が良い理由は下記の通りです。
・配列のindexはint型で管理しているので毎回Castする事になります。
・C#は整数の計算系をint型に揃えているので、そこでもCastが入る可能性があります。
・そもそもまとめて宣言しない限り0埋めが発生するので、for分のindex程度では意味がないです。
・byteかintかとか、メモリ管理はコンパイラがいい感じにしてくれるので、逆にコンパイラの邪魔になるとかいう話もあるそうです。
・そもそも最近のCPUの処理速度はとても速いので、その程度の最適化では大した差は生まれないです。もし動作が重い事を理由に最適化するのなら、intかbyteかよりも重大な問題が他にあるはずで、そこを修正した方が何倍も効率的です。
補足
「じゃあC#のByte型いらないじゃん!」とならないように、一応補足しておくと、byte型は通信の時に文字数を節約する為に使えるので現在でも不要ではないです。
つまり処理速度を犠牲に通信量を減らすという事ですね。
杞憂でしたが、私にとっては興味深い調査でしたので満足しています。
以上です。精進します。
↧