- 745 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 05:33:04 ]
- forは内部的にeachを呼び出すそうだから、速度差など無いに等しい。
どうしても気になるなら一億回くらい空ループ回して計ってみるといい。 まぁ、仮に10倍の速度差があったとしても、今は気にする必要ない。 プログラムの高速化はまず何よりもアルゴリズムが最優先。 小手先の最適化に手をつけるのはその後だね。 breakは単に使い方が悪い。 >>677の最初の2つは先にreturnするので、絶対に到達しない。 最後のはbreak後returnしかしていないので、returnで置き換え可能。 breakせずに抜けるパターンの場合、必ず範囲外アクセスで落ちる。 つまりすべての箇所で何の役にも立っていないというわけ。 異常入力にマジックナンバーを返すのもありだけど、発生頻度が低く 検査箇所が多いようなら例外(Exception)を発生させたほうがいいよ。 コードの見通しがまるで違ってくるから。 VLOOKUPは検査値に対応する行と指定した列が交差するセルの値を 返すのに対し、MATCHは検査値に対応する値の位置を返す。 VLOOKUPでは検索範囲が左端の列で、かつ対応する値の列の高さと 縦位置が完全に一致しなければいけない。 MATCHとINDEXまたはOFFSETとの組み合わせなら、検査列に対応 する値の列が左にあってもよいし、縦にずれていてもよいし、列でなく 行(対応する値が横に並ぶ)でもよい。 その気になれば対応する値をnマスおきに飛び飛びにだってできる。 それに比べると列指定不可のVLOOKUPなんてあまりに不便すぎる。
|

|