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 サブフロー速度検証結論

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

 「サブフロー呼び出しは早いか」の結論は、「サブフロー呼び出しは早い」と言える。
 Power Automate Desktop フローから Power Automate Desktop フローを呼び出す、Desktopフロー呼び出しは、呼び出した分だけ時間がかかる。Microsoft Dataverseからのデータ読みだしに時間がかかると推測される。また、一度Desktopフローを呼び出したからと言って、パソコン側に情報がキャッシュされたりはせず、毎回Microsoft Dataverseからデータを読みだしていると推測される。

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

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