PDA

View Full Version : メモリか条件分岐か


nen-nen
2002/05/13, 04:51 PM
C言語でCGIプログラミングをしているのですが、ふと気になったことがあったので質問します。

たとえば、データを読み込み、それの一部を処理に使うと言うプログラムがあったときに、データ部を内部に組み込みむような感じでやっていた場合
switch(a) {
case 0 :
//変数への代入処理
break;
case 1 :
//変数への代入処理
break;
(略)
case 299:
//変数への代入処理
break;
}
として、ひたすら条件分岐に頼りメモリの使用量を減らすか
hoge[300][10]={'a','b','c',(略),'y','z'};
のように代入してから必要なデータ部だけを取り出すと言うメモリの使用量は多いが条件分岐の必要はない

この2つの方法の場合どちらをとるべきなのでしょうか?

dayan
2002/05/13, 06:10 PM
何を優先するか(メモリ消費量(データ部分、コード部分)・実行時間・保守容易性etc)により答えが変わると思いますが...

nen-nen
2002/05/13, 09:55 PM
たしかに、何を優先させるかによりますね。
せっかくCで書いたんだから早いほうがいいと思いますがたくさん代入処理を行ってるとそりなりに無駄な処理が多くなったりすることとかを考えていたりと……

dayan
2002/05/13, 11:44 PM
C言語を育てた Brian W. Kernighan (http://amalfi.dis.unina.it/~foggia/hall/brian-kernighan.jpg) 教授が素晴らしい回答を与えてくれています。

そこが改善(高速化etc)に足る場所かをまず調べ、
改善ニーズがあるなら、いろいろなパターンで実測検証すべし

と。

だって、Cライブラリの作りでも、コンパイラが吐き出すオブジェクトでも、ハードの命令の実行速度でも、実行時のデータ量でも変わってくるんだもん。

nen-nen
2002/05/14, 04:00 PM
やっぱり、最適な処理を導くには何度か実験をすべきなんですね。。
実験していけばどれが一番最適かわかるようになると思います。

試してみます。ありがとうございました。