パイプラインの処理能力

パイプラインの処理能力は、トークンが流れる比率に関係する 2 つの条件によって制限されます。最初に、パイプラインが N 個のトークンで実行される場合、N よりも多くの操作を並列に実行できないことは明白です。N の正しい値を選択するには試行が必要です。値が低すぎると並列処理が制限され、逆に高すぎると、より多くのリソース (例えば、より多くのバッファー) が必要になります。次に、パイプラインの処理能力は最も遅いシーケンシャル・フィルターの処理能力に制限されます。この制約は並列フィルターのないパイプラインにも当てはまります。ほかのフィルターがどれだけ速くても、最も遅いシーケンシャル・フィルターがボトルネックになります。したがって、一般に、シーケンシャル・フィルターを速い状態で保つ必要があります。可能であれば、ワークを並列フィルターに移すようにしてください。

シーケンシャル・フィルターがシステムの I/O 速度によって制限されるため、テキスト処理のサンプルはあまり速くなりません。ファイルがローカルディスク上にある場合でも、2 倍以上のスピードアップは見込めません。実際にパイプラインの恩恵を得るには、並列フィルターがシーケンシャル・フィルターよりも重い処理を行う必要があります。

各トークンのウィンドウサイズ、またはサブ問題サイズも処理能力を制限します。ウィンドウサイズを小さくしすぎると、オーバーヘッドが大きくなります。ウィンドウサイズを大きくしすぎると、キャッシュに収まらなくなります。キャッシュに収まる、できるだけ大きなウィンドウサイズが理想的です。最適なウィンドウサイズを見つけるには、多少の試行が必要です。