0

GM を使用して画像圧縮を行い、同じことを行うと仮定したズーム機能とサンプル機能の間に大きなパフォーマンスの違いを観察します。

68k 画像にズーム機能を使用すると、プロセスはすべてのコア (12 コア、2.4G Hz マシン) のすべての CPU 時間を消費する可能性があり、スループットは 65/秒、応答時間は平均 469 ミリ秒、top コマンドによる負荷は11 前後、CPU 使用率は 100% に近い

サンプル機能を同じ環境で使用すると、24 プロセスが連携して 1000/秒に近いスループットを実現し、応答時間は平均 37 ミリ秒、top コマンドによる負荷は約 3、CPU 使用率は 50% から 80% の間で変動します。

これら 2 つの関数の公式ドキュメントは、次のように非常に単純です。

サンプル ピクセル サンプリング アルゴリズムを使用して画像のサイズを変更します。

void サンプル ( const Geometry &geometry_ )

zoom 画像を指定したサイズにズーム (サイズ変更) します。

void ズーム ( const Geometry &geometry_ )

画像処理後の効果は似ていますが、違いは非常に大きいです。

  1. パフォーマンスの問題により、ズームではなくサンプルを選択する可能性があるため、これら2つの関数を使用するさまざまな状況を誰かが説明できますか?

  2. さらに、ズームが CPU 時間を消費する理由を誰か教えてください。

4

1 に答える 1

0

GraphicsMagick ではパフォーマンスが低下したため、キャッシュ ラインのスラッシングなど、システムに依存する問題が発生した可能性があります。-sample オプションは、出力イメージの各ポイントが入力イメージから 1 つのポイントを選択する単純なポイント サンプリングを使用します。-zoom オプションは、指定されたフィルター (-filter) を使用して水平/垂直フィルタリングを行うため、高品質 (フィルターによって異なります) が提供されます。非常に大きな画像の場合、-scale を使用することをお勧めします。これは、-zoom とほぼ同じ結果を生成するウィンドウ フィルターですが、CPU コアを 1 つしか使用せず、それでも非常に高速です。

于 2013-01-22T03:06:17.640 に答える