ParallelSubFlowコンポーネントのメモリ使用量改善

WARP4.8ではParallelSubFlowコンポーネントのメモリ使用量が大幅に改善されました。

メインのフローでCSVファイルを読み込んで、Parallelサブフローに渡す処理を作成し、1回のループの場合と8回のループの場合でのメモリ使用量を測定しました。

合計メモリ 空きメモリ 使用メモリ
実行前 909.5 897.4 12.1
1回ループ 910.5 837.2 73.3
8回ループ 910.5 411.5 499

1回ループの実際の使用メモリは実行前の使用メモリを引いて73.3 - 12.1 = 61.2MBとなります。8回ループの実際の使用メモリは実行前の使用メモリを引いて499 - 12.1 = 486.9MBとなります。ここで多重度を考えると、8回ループというのは8多重で動いているということになりますので、使用メモリを8で割ると1多重分の使用メモリを計算することができます。そこで、8回ループの使用メモリ486.9MBを8で割ると60.9MBとなり、これが1多重分の使用メモリです。そして、これは1回ループの場合の61.2MBとほぼ同じになりました。

以前からあるTimerコンポーネントの場合も見てみましょう。
合計メモリ 空きメモリ 使用メモリ
実行前 909.5 897.4 12.1
1回ループ 910.5 837.6 72.9
8回ループ 910.5 409.2 501.3

使用メモリを見てみるとParallelSubFlowコンポーネントとほとんど同じ結果となっていることが分かります。

以前のバージョンのParallelSubFlowコンポーネントは、Timerコンポーネントと比較して非常に多くのメモリを必要としていましたが、WARP4.8ではコンポーネントの実装を大幅に変更し、Timerコンポーネントとほぼ同じメモリ使用量となりました。

最後に、WARP4.8のParallelSubFlowコンポーネントの特徴をまとめると次のようになります。

  • メモリ使用量はTimerコンポーネントと同等
  • 1多重のメモリ使用量を計算すれば、n多重で実行した時のメモリ使用量は「n×1多重のメモリ使用量」となる
  • 最大並列実行数プロパティで最大実行数を制御できる
  • サブフローの結果を待ち合わせることができる
最後の2つのポイントはTimerコンポーネントにない重要なポイントになります。
マルチコア、マルチCPUのCPUスペックを活かすために、ParallelSubFlowコンポーネントを使用してみてはいかがでしょうか。
この記事は役に立ちましたか?
0人中0人がこの記事が役に立ったと言っています

他のキーワードで検索する