【Power Automate】Apply to each と Do until はどちらが速いのか

入社して2ヶ月が経ちました、最近は毎日Power Automateを触っています。小倉です。

今回はPower Automateの「Apply to each」と「Do until」のどちらが処理速度が速いのか検証してみたいと思います。

検証内容

「1から1000までの整数の和を求める」フローを5回ずつ実行し、実測値の平均を比較する

(まぁこのくらいの計算なら人間でも一瞬で出来ると7歳のガウス先生は仰っていますが…
今回は検証のためこのような簡素なフローにしました)

ちなみに1から1000までの和は500500です。

Apply to eachの場合

フローは以下のようになります。

(Do untilでは変数の加算処理が2つあるので条件を合わせるためにわざと0を足す処理を加えています。1から1000までの整数の和を1ずつ加算して求めるだけなら、その処理を消すことで処理時間の高速化が見込めます。)

実行結果はこちらです!

回数12345平均
処理時間3分46秒4分52秒4分21秒3分41秒3分24秒4分1秒

平均は約4分、思っていたより実測値がばらついたので何回か測定したのは正解ですね。

では、Do Untilの場合を見てみましょう。

Do untilの場合

フローは以下のようになります。

(Do untilのループ制限がデフォルトで60に設定されているのでそこの変更を忘れずに!)

実行結果はこちらです!

回数12345平均
処理時間5分39秒4分58秒5分1秒5分27秒5分6秒5分14秒

平均は5分14秒、Apply to eachより1分13秒の処理時間が必要になりました。

まとめ

今回の検証ではApply to eachのほうが処理速度が速いという結果になりました。

Apply to eachではDo untilに比べ1/4~1/5の時間を短縮しています。

もし、Apply to each でも Do untilでも実装できるけど、どちらを使えばよいか悩んだときはApply to each を選んでみると良いかもしれません。

おまけ ~Apply to each に本気を出させる~

Apply to eachは並列処理することができます。並列処理をするとループ内の処理を同時に行うことができます。

方法

Apply to eachの設定から

コンカレンシー制御をオンにしてください。これによって並列処理になります。

並列処理の次数を大きくすればするほど、処理が速くなります。

その結果はこちらです。(並列処理の次数=50)

回数12345平均
処理時間0分37秒0分30秒0分36秒0分27秒0分34秒34.4秒

速い!!オフの時と比べて段違いに速くなってます。

もしも順序が関係ない処理などの並列処理が可能な場合はコンカレンシー制御をオンにすると良いと思います。

ではこれにて失礼します。

FIXER Inc. 小倉 直弥
  • FIXER Inc. 小倉 直弥
  • 四日市事務所所属。
    面白いネタがあったら積極的に投稿できるように頑張ります。