1

私はphpで動的リストを作成するつもりです。そのために、すべての行にリストの要素を含むプレーンテキストファイルがあります。すべての行には、最終的な HTML ドキュメントをレンダリングする前に、いくつかの小さなチャンクに解析する必要がある文字列があります。

前回同様のことをしたときは、file() 関数を使用してファイルを配列にロードしましたが、今回は 50 行を超える 12 KB のファイルがあり、時間の経過とともに確実に大きくなります。パフォーマンスの問題を回避するために、ファイルから SQL データベースにエントリをロードする必要がありますか?

4

3 に答える 3

1

はい、情報をデータベースに入れます。12KB のファイルは非常に高速に読み取られるため、(シーケンシャル読み取りに関して) パフォーマンス上の理由ではなく、個別のチャンクへの解析に関する部分のためです。これらのチャンクを DB テーブルの列にします。これにより、プログラミングプロセス全体がより高速になり、柔軟性が向上します。

于 2012-12-17T15:50:53.580 に答える
0

適切にフォーマットされたデータベースに分割することは、ほぼ常に良い考えであり、パフォーマンスの節約になります。

ただし、50 行はかなりマイナーです (数百行でもかなりマイナーです)。簡単に計算すると、12KB / 50 行から、各行の長さは平均で約 240 文字しかないことがわかります。

これが非常に高性能なサイトでない限り、処理量 (またはその数倍) が恐怖を引き起こすほどの重大なパフォーマンス ヒットになるとは思えません。

于 2012-12-17T15:46:33.670 に答える
0

50 行は多すぎるとは思えませんが、後で変更するよりも、今データベースを使用することをお勧めします。覚えておかなければならないことの 1 つは、データベースを使用してもパフォーマンスの問題がすぐに解消されるわけではありませんが、リソースをより有効に活用するのに役立つということです。実際、ファイルを使用して同様に最適化されたプロセスを作成することもでき、I/O の違いを除いてほぼ同じように動作します。

質問を読み直したところ、毎回データベースにファイルをロードすることを意味している可能性があることに気付きました。ファイルへの繰り返しのヒットを避けるためにデータベースをキャッシュの形式として使用していない限り、これがどのように役立つかわかりません。最終的に、ファイルまたはデータベースからの読み取りは、スクリプトが I/O やディスク キャッシュなどを使用する方法のみが異なります。リストに対して行う処理は、ここでさらに大きな違いを生む可能性があります。

于 2012-12-17T15:49:19.900 に答える