最近、行数の多いファイル(数百万行程度)を読み込むためにPHPの勉強をしているのですが、簡単な勉強をしてみました
file() 関数の効率に関する最初の問題です。
file() 関数の効率は非常に低いので、1 行に 1 つのデータが対応するような通常のファイルの場合は、file() 関数を使用しないようにしてください。
file_get_contents() を使用してから、explode を使用してカットすると、効率が 3 分の 1 速くなります。例:
ファイルスタイルは次のとおりです:
11111n
22222n
33333n
44444n
55555n
……ん
んんんんんんんんん
file($file)で読み込むと時間がかかります
次のメソッドを使用すると、explode("n",file_get_contents($file)); 効率が大幅に向上します。
2番目に、配列を走査する方法
データが配列に読み込まれました。次はトラバーサルです。
私が必要とするのは、配列内に値が存在するかどうか、たとえば 44444 が配列内にあるかどうかを判断することです。最初に思い浮かぶのは in_array() です。
しかし、実験した結果、効率が非常に悪いことがわかりました。そこで、他の人のコードを参考に、配列を反転してすべての値をインデックスにする方法を考えました。 ($arr in if [Index]==1) と書くだけで、確かに効率は高くなります。
配列の走査プロセス中に、配列が非常に大きく、配列内のすべてのデータを使用できない場合は、走査に使用される配列を抽出するのが最善です。これにより、効率が大幅に向上します。 第3条、配列の保存計算したデータをファイルに保存する方法としては、phpファイルに直接書き込む方法と、json文字列として保存する方法が考えられます。 最初の方法
ファイルに直接書き込みPHPとして保存
必要なときに直接要求します。
2 番目の方法
。変数をシリアル化してから、file_put_contents() をファイルに追加します。
3 番目のメソッドは 2 番目のメソッドと似ており、単に json 文字列として記述されます。 テストの結果、2 番目のタイプが最も効率的で、3 番目のタイプが 2 番目で、1 番目のタイプとほぼ同じくらい効率的であることがわかりました。これは私が予想していたものとの間には大きなギャップがあります。本当にびっくりです
http://www.bkjia.com/PHPjc/326758.html
www.bkjia.com
true