timeあるテキストファイルを処理するプログラムがあるのだけど、ファイルサイズが大きくなるとものすごく処理が遅くなるという、ちょっと困った現象が起こっていました。
ファイルサイズが4倍、16倍となれば、処理時間も4倍、16倍となるはずです。しかしこのプログラムは6倍、193倍とリニアな伸び方ではなく、乗数的な伸び方をしているのです。システムダウンはもう目の前です。(笑)

そこで、プログラムをミリ秒単位で計測するデバッグルーチンを入れてみたところ、意外な原因がわかりました。その原因とは、なんと、

$lines = split(“\n”,$textdata);

おなじみ、split()関数でした。
テキストデータの改行を区切りとして、配列に1行ずつ格納したかったんです。しかもこのプログラムを見ておわかりですね?explode()使えよって感じです。(笑)

正しい使い方

$lines = explode(“\n”,$textdata);

split() を explode() にしたところ、94,861ms かかっていた処理が 26ms で終わりました。split()遅すぎ~!!

LINEで送る
Pocket