パイプラインのスループット#
パイプラインの処理能力は、トークンが流れる比率に関係する 2 つの条件によって制限されます。最初に、パイプラインが N 個のトークンで実行される場合、N よりも多くの操作を並列に実行できないことは明白です。N の正しい値を選択するには試行が必要です。値が低すぎると並列処理が制限され、逆に高すぎると、より多くのリソース(例えば、より多くのバッファー)が必要になります。2 番目に、パイプラインのスループットは、最も遅いシーケンシャル・フィルターのスループットによって制限されます。これは、並列フィルターのないパイプラインにも当てはまります。他のステージがどれだけ速くても、最も遅いシーケンシャル・フィルターがボトルネックになります。したがって、一般に、シーケンシャル・フィルターを速い状態に保つ必要があります。可能であれば、ワークを並列フィルターに移行してください。
シーケンシャル・フィルターがシステムの I/O 速度によって制限されるため、テキスト処理の例はあまり速くなりません。ファイルがローカルディスクにある場合でも、2 倍以上のスピードアップは見込めません。実際にパイプラインの恩恵を得るには、並列フィルターがシーケンシャル・フィルターよりも重い処理を行う必要があります。
各トークンのウィンドウサイズ、またはサブ問題サイズも処理能力を制限します。ウィンドウサイズを小さくしすぎると、オーバーヘッドが大きくなります。ウィンドウサイズを大きくしすぎると、キャッシュに収まらなくなります。適切なガイドラインとしては、キャッシュに収まる大きなウィンドウサイズを試すことです。適切なウィンドウサイズを見つけるには、少し実験が必要であるかもしれません。