仕事の話
組み込みのC言語で処理負荷の話になったので。
a、sumはint型。
[c]
for(i=0;i<4;i++){
sum += a[i];
}
[/c]
よりも、
[c]
i=4;
p_a=a;
while(i--){
sum += *p_a++;
}
[/c]
のほうが命令数が少ない。
ポイントは
- 前者はaを進めるための隠れレジスタを持っている。aはint型なので隠れレジスタは+4(職場の環境でのint型のサイズ)ずつ増える
- 後者はi--でデクリメントと判定を1命令でできる命令が用意されている(前者はインクリメントと比較の2命令)
処理負荷と見やすさはトレードオフだし処理負荷の世界ではまだ序の口だし、難しいところ。