Power Automate Desktop 速度検証 ~サブフロー呼び出しは 遅い のか~

Power Automate Desktop 速度検証 サブフローは早いかイメージ

 Power Automate Desktop でフローを作成する際、Mainから処理を作ります。また、共通的に利用できる処理は「 サブフロー 」を使いますよね。「 サブフロー 」がたくさんできると、自動化の完了が 遅れる のでは、と考えことはありませんか。 自動化して、 Power Automate Desktop を起動して帰宅したのはいいけれども、朝会社に着いたらまだ動いていた。終わる気配が無い。しかも終わらないのは、朝一の経営会議のためのデータ自動集計だった。そんなことがあると非常に困りますね。

 そこで Power Automate Desktop でサブフロー呼び出しはどの程度時間がかかるのか、サブフロー呼び出しを使わないとどうなのか。またサブフロー呼び出しではなくDesktopフローを呼び出すとどうなのか、を簡単に速度検証してみたので紹介します。

速度検証の前提条件

 Power Automate Desktop を動作させたパソコンは、Windows 10 Pro の Intel(R) Core(TM) i7-8550U CPU です。また、仕事用アカウントを利用したため Power Automate Desktop のフロー情報はOneDriveではなく、Microsoft Dataverseからの読み出しになります。 Power Automate Desktop 動作中は極力、他のアプリケーションを動作させないようにしました。しかし、 Power Automate Desktop のみが集中して動ける状況を徹底して用意はしておりません。

 本記事を読んでいただいている方が、本記事と同じ速度検証をした場合に、同一の結果が出るものでもなく、また同一の結果を保証するものではない点はご注意くださいね。

Power Automate Desktop サブフロー速度検証概要

速度検証においては、複雑な要素を排除して、単純なフローの比較を行います。用意したのは次の3つのフローです。

①Main処理のみ100回動作
②サブフローを100回呼び出し
③Desktopフローを100回呼び出し

 それぞれの処理は単純化して以下の処理で構成しました。
 現在の日時を取得
 変数に100を設定
 サブフロー呼び出し
 Desktopフロー呼び出し

処理概要実施した処理
①Main処理のみ100回動作現在の日時を取得 → {変数に100を設定}(100回) → 現在の日時を取得
②サブフローを100回呼び出し現在の日時を取得 → {サブフロー呼び出し:変数に100を設定}(100回) → 現在の日時を取得
③Desktopフローを100回呼び出し現在の日時を取得 → {Desktopフロー呼び出し:変数に100を設定}(100回) → 現在の日時を取得

 測定する処理のイメージとしては次のようになります。

①Main処理のみ100回動作
Main処理内で変数に100を設定するように構成しました。

Power Automate Desktop 速度検証 Main処理100回

②サブフローを100回呼び出し
「①Main処理のみ100回動作」との違いは、「サブフローを100回呼び出し」となるように構成しました。

Power Automate Desktop 速度検証 サブフロー100回

③Desktopフローを100回呼び出し

「①Main処理のみ100回動作」との違いは、「Desktopフローを100回呼び出し」となるように構成しました。

Power Automate Desktop 速度検証 Desktopフロー100回

 以上の3パターンについて、フローデザイナー画面で5回ずつ実行、コンソール画面で5回ずつ実行して、処理時間を計測しました。

①Main処理のみ100回動作した場合の検証結果

フローデザイナー画面で実行13秒12秒12秒12秒13秒
コンソール画面で実行1秒未満1秒未満1秒未満1秒未満1秒未満

 Main処理のみ100回動作した場合、「フローデザイナー画面で実行」では12~13秒程度かかるものの、「コンソール画面で実行」では1秒未満でした。当然ながら「コンソール画面で実行」した場合の方が早いですね。

②サブフローを100回呼び出した場合の検証結果

フローデザイナー画面で実行24秒24秒24秒24秒26秒
コンソール画面で実行1秒未満1秒未満1秒未満1秒未満1秒未満

 サブフローを100回呼び出した場合、「フローデザイナー画面で実行」では24~26秒程度かかるものの、「コンソール画面で実行」では1秒未満でした。
 先に示したMain処理のみ100回動作した場合と、サブフローを100回呼び出した場合とで、「フローデザイナー画面で実行」では12~13秒程度の差があります。このことから、サブフローの呼び出しは、「フローデザイナー画面で実行」時には、1回あたり0.12秒~0.13秒くらい処理時間が発生している可能性があると言えます。


 さらに、サブフローを100回呼び出した場合、「フローデザイナー画面で実行」で24秒、「コンソール画面で実行」で大きめに見積もって1秒かかっています。よって、「フローデザイナー画面で実行」→「コンソール画面で実行」では処理は24分の1になったと言えます。そうすると、先に示した「フローデザイナー画面で実行」でサブフロー呼び出し1回あたり0.12秒~0.13秒くらいの処理時間は、「フローデザイナー画面で実行」では24分の1の約0.005秒程度になると言えますこのサブフロー呼び出し1回あたりの時間となる約0.005秒程度は、その他要素としてある程度の誤差を見込んでも、「早い」レベルと言っていいのではないでしょうか。

③Desktopフローを100回呼び出した場合の検証結果

フローデザイナー画面で実行200秒202秒202秒202秒201秒
コンソール画面で実行200秒202秒205秒204秒207秒

 Desktopフローを100回呼び出した場合は非常に興味深い結果が得られました。「フローデザイナー画面で実行」でも、「コンソール画面で実行」でもほぼ変わらない時間結果となりました。このことから、Power Automate Desktop でDesktopフローを呼び出した場合は、Desktopフロー呼び出し時間の影響を大きく受けると言えます。

 また「フローデザイナー画面で実行」でフローが動く様子からは、Desktopフロー1回あたりに約2秒という安定した時間がかかっていました。この2秒は、サブフロー呼び出しとDesktopフロー呼び出しのそれぞれの特徴の違いから考えるに、Microsoft DataverseからDesktopフローを読みだす処理にかかっている時間と推測されます。またDesktopフロー呼び出し回数に比例して処理時間がかかっていました。このことから、Desktopフローを呼び出した際は、パソコン側に情報がキャッシュされたりはせず、Desktopフローを呼び出す都度、毎回Microsoft Dataverseからデータを読みだしていると推測されます。

Power Automate Desktop サブフロー速度検証結論

 今回の検証から、次の結果が言えます。

 「サブフロー呼び出しは 遅い のか」の結論は、「サブフロー呼び出しは 早い 」と言えます。また Desktop フロー呼び出しを使っていて、フロー が 遅い 場合には、下記が理由であると考えられます。
・ Microsoft Dataverse からのデータ読みだしに、時間がかかっていると推測される。また、Desktop フロー を複数回呼び出す場合は、パソコン側に情報がキャッシュされたりはせず、毎回Microsoft Dataverseからデータを読みだしていることで、時間がかかると推測される。

 以上のことより、フローを作成する人に向けては、以下の点をご報告いたします。
・共通処理のサブフロー化はあまり心配せず進んでやりましょう。呼び出す数が多すぎる場合は当然、注意してみてください。
・DesktopフローをDesktopフローから呼び出しているケースや、Desktopフロー呼び出しによってフロー共通化を検討する場合は、フローが 遅くなる可能性があるため注意しましょう。

※なお、本検証は「Mainのみ処理」と「サブフロー呼び出し」、「Desktop呼び出し」を相対評価した考察となります。Microsoft社からの Power Automate Desktop に関する情報をふまえた利用方法の推奨情報を案内するものではありません。Power Automate Desktop をご利用する場合は、実際の利用状況や業務に応じた処理時間確認が必要である点は、ご注意よろしくお願いいたします。