数値を桁数で振り分けて処理をしようとしたとき、数値の範囲を比較演算する他に/^\d{4}$/とか正規表現でもできるけど遅いよなー。どのくらい遅いのかなーと。
そんなこんなで試してガッテン。
ランダムに生成した1000個の整数に対して比較演算で10回、正規表現で10回振り分けをおこない、さらにそれを10回繰り返した平均をとってみた。
【10桁】
比較演算:0.025183058
正規表現:0.044619989
【5桁】
比較演算:0.014628196
正規表現:0.022722244
【3桁】
比較演算:0.010463595
正規表現:0.014442444
単位は秒。
なお、生成された数値によって結果に偏りがが生じないよう、一つの数字に対して全ての桁で条件判断をおこなっている。
10桁の場合は100000回条件判断した結果なわけだけど、思ったより正規表現は遅くないなぁという印象。
桁数が小さくなるほど差が縮まるのは期待通りか。
つーか、どうせ文字列として扱うならlengthで長さとって比較演算した方が速い気が。
ん?あ。Perlの話な。
って、今一緒に仕事してる四年目の先輩がこの仕事で辞めてしまわれるらしいですよ。