1

関数を作成する必要があり、どちらが高速か疑問に思っています。

画像サイズを DB テーブルに使用getimagesize()または保存し、そこから取得しますか?

アプリを作成する際に考慮すべき要素が他にもあることを認識しています。しかし、私はこれを知る必要があります、ありがとう。

4

3 に答える 3

3

実際には画像のサイズに依存するとは思いません..通常、幅/高さは メタデータとして保存されます。つまり、画像ヘッダーのみを処理する必要があります。そのため、「比較的高速な」操作である必要があり、[ほとんど] 一定の壁時計時間がかかる必要があります。getimagesize

そうは言っても、全体的に「高速」であるとして、データベース呼び出しに暫定的に傾いています。(私に有利な議論のために、適切な接続プーリングと適切なスキーマ/インデックスを使用して、遅延の少ない接続上に滞りのないデータベースを投影しています。)

  1. データベースには、よりホットなバッファーとわずかに少ない IO の可能性があります。ディメンション情報はより少ないビット数で圧縮され、データベースは追加のシステム コールを回避できる場合があります (getimagesize毎回ファイルを開く必要があります)。

  2. 寸法をデータベースに保存することで、画像ヘッダー処理の重複を回避できます。私は「比較的速い」と主張していますが、操作には時間がかかり、多くの呼び出しを追加できます。

  3. 他の画像メタデータがデータベースからアクセスされる場合、ディメンション情報は「ゼロ コスト」の追加として簡単に含めることができます。

あるいは、キャッシュ プロバイダー (memcached など) は、従来の RDBMS データベースのパフォーマンスを単純な関連付け/フェッチで完全に吹き飛ばしgetimagesize、必要に応じてバックアップすることができます。

zerkms が言ったように、実際の使用環境でさまざまなアプローチを測定することが、どちらがより高速かを知る唯一の方法です。あるアプローチが他のアプローチよりも優先されるように「パフォーマンス」を傾ける可能性のある要因があります。もちろん、それは問題ではないかもしれません:遅い 3% を速くすることに集中してください:)

于 2013-09-30T22:28:40.270 に答える
2

おそらく、データベースに格納する方が高速です。

getimagesize()画像のサイズによっては、非常に遅くなる場合があります。サイズを取得してデータベースに保存するために、おそらく一度使用する必要があります。その後、データベースにクエリを実行してサイズを取得します

于 2013-09-30T22:17:33.053 に答える
1

すべてはサイズによって異なります。

特に画像が非常に大きくなる可能性がある場合は、データベースクエリの方が高速になると思います。

于 2013-09-30T22:17:57.397 に答える