文字列の検索

文字列の検索する際に使う関数の速度を比較してみた。
preg_match : 0.156914ms
→ preg_match (“/”.$pattern.”/”, $subject )
mbereg : 0.198855ms
→ mbereg ($pattern, $subject )
strpos : 0.093295667ms
→ strpos($subject ,$pattern) !== false
mb_strpos : 0.226389333ms
→ mb_strpos($subject , $pattern) !== false
(3回の平均)
当然だけどstrposが一番、
ただmb_strposが遅いのが以外だった。
mberegとmb_strposを比較してもmb_strposの方が遅い、
ただ、今回のテストでmberegはコンパイルエラーが出た。
再読込すると直ったので原因はよく分からない。
数十回に一回ぐらい同じファイルなのに検索結果が違うときがある。
これも再読込すると直る。
負荷をかけすぎなのかもしれないがロリポは何か挙動がおかしい気がする。
(XREAは偶に表示できなくなるけど・・・)
本格的に運用するならもう少し高価なサーバーの方がいいのかもしれない。

Tags: , ,

トラックバック

“文字列の検索” へのレス1件

  1. […] おっしゃる通り「strncmp」は速く「preg_match」は遅いが「strpos」が予想以上に速く、単純な文字列の検索も今回のような特定位置の文字列検索も「strpos」が最速という結果になった。 […]

コメントを書く