file関数とfopen関数の速さ
前回質問して自分だけ自己解決してたわけだけど、もう少しわかりやすく書いておく。
http://d.hatena.ne.jp/tukihatu/20080626/1214445854
fopenとfileでは、fopenの方が低メモリでできる。
しかしwhileで回してるので件数増えると重い。
つまり
1000件データを回すとして $fp=fopen("file",r); while(){ $date[]= } と $date=file("file"); は同じ処理。 $fp=fopen("file",r); $date[0]= $date[1]= … $date[999]= と $date=file("file"); は同じ処理
結局whileは繰り返しで同じコードをなんども書いてることになる。
だから遅い。
解決法としてはfileを使うか、freadを使ってみるか、そもそも全部読み込む必要あるの?という制限をつけるとか。
ただfileは配列に全部読み込むので、読み込む量が多いとメモリが足りずに処理が停止する…
といってもwhileでも同じことが起きるはずですが。