new byte [4096] は本当にちょうどいいのか

プログラマの習性として、バッファのサイズを2の冪にして確保してしまうというのがあると思う。僕もそう。

たとえば、

var buf = new byte[4096];

とかね。

 

でも、いつもいつも思うけど、これって本当はキリが良くないよね。

確かに、Cのときはmallocに指定したサイズが即ち確保されるサイズだった(たいていは)。

でもいま、C#とかJavaは、領域の先頭に型情報ポインタと配列なら長さを追加するじゃん。

だから、本当にちょうどいいのは new byte [4088 /*4096 – 8*/] じゃないかな。

いつも悩む。

 

なお、バッファのサイズは仕様的に定まるからプログラマの裁量や感性で決まるものではない、なんていう野暮はナシで。