このページの本文へ

FIXER cloud.config Tech Blog

Power Automateの「Apply to each」と「Do until」はどちらが速いのか試してみた

2021年06月11日 11時00分更新

文● 小倉 直弥/FIXER

  • この記事をはてなブックマークに追加
  • 本文印刷

 本記事はFIXERが提供する「cloud.config Tech Blog」に掲載された「【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ずつ加算して求めるだけなら、その処理を消すことで処理時間の高速化が見込めます。)

 実行結果はこちらです!

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

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

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

Do untilの場合

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

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

 実行結果はこちらです!

回数 1 2 3 4 5 平均
処理時間 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)。

回数 1 2 3 4 5 平均
処理時間 0分37秒 0分30秒 0分36秒 0分27秒 0分34秒 34.4秒

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

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

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

 小倉 直弥 /FIXER

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

[転載元]
 【Power Automate】Apply to each と Do until はどちらが速いのか

カテゴリートップへ