e23.c

char 型は遅いよ


1.遅い!! 修正前 char i ; for(i = 0 ; i < 0x7f ; i++) { 配列[i] = 0 ; }
修正後 int i ; for(i = 0 ; i < 0x7f ; i++) { 配列[i] = 0 ; }

日本人は縮み指向(盆栽が好き)があり、 CHAR/SHORTを好みますが、 CHAR/SHORTの計算は、 一度INTへ拡張処理がはいるため、遅いです。 境界調整がはいるので、スタックの節約にもなりません。 左辺をINT型にできないか検討して下さい!! ただし、 コンピュータ外部への入出を伴う、構造体のメンバーでは、 CHAR/SHORTを使用してもかまいません。 先の例では処理速度が2倍も違います!! 詳細は、 プログラミング言語C 第2版 ANSI規格準拠 カーニハン リッチー著/石田晴久訳』 「2.7 型変換」Page52C-FAQ 1.1J C-FAQ 1.1E を参照して下さい。
2.頭が欠けます short S ; long L = 0x10008000 ; printf("S=L= %x¥n",S = L) ;
解説 ┌──┐┌──┐ L: │1000││8000│ └──┘└──┘ ┌──┐ S: │xxxx│ └──┘ ───────────── ┌──┐ S: │8000│ サインビットが立っている。 └──┘ 以下の危険がある。 (1) 頭(0x1000)が欠ける(事もある)。 (2) 正値が負値になる(事もある)。