前回の記事はこちら✨


選手権のルール

1.環境:UiPath Studio 2022.10

2.処理内容:ダミーの個人情報が記載されたExcelデータを読み込み、一行ずつ繰り返し処理を行い、動作ログに3列分の情報を出力、ステータス列に登録ステータスを記載し、元のExcelに書き込む

3.100件(28KB)、1000件(165KB)、10000件(1455KB)の階級別とし、各階級毎に総時間を計測し、最も処理時間の短かった選手が勝利

4.3階級で最も成績の良かった選手が優勝

出場選手

本選手権の出場選手をご紹介します。

番号 通り名 Tool 種別 プロパティ等
1番 UiPathの顔 UiPath Studio クラシックデザインエクスペリエンス Excelアプリケーションスコープ(可視オプションON) + DataTable
2番 見えなくたって UiPath Studio クラシックデザインエクスペリエンス Excelアプリケーションスコープ(可視オプションOFF) + DataTable
3番 期待の新星 UiPath Studio モダンデザインエクスペリエンス Excelプロセススコープ(可視OFF) + DataTable
4番 Excelの中見れちゃうよ UiPath StudioX モダンデザインエクスペリエンス Excelプロセススコープ(可視ON) + Excelの繰り返し(各行)
5番 Excelの中こっそり見ちゃうよ UiPath StudioX モダンデザインエクスペリエンス Excelプロセススコープ(可視OFF) + Excelの繰り返し(各行)
6番 反逆のX UiPath StudioX モダンデザインエクスペリエンス Excelプロセススコープ(可視OFF) + DataTable

出場選手のワークフロー

選手権開催前にざっとワークフローを見てみましょう。

パフォーマンスの計測方法は、いずれも以下の方式をとっています。

  1. DateTime.Nowで計測開始時点の現在時間、計測終了時点の現在時間を取得。
  2. (終了時点の時間 - 開始時点の時間).TotalMiliSecondsにて、開始終了間の差分時間をミリ秒単位で算出

1番&2番:Studioのクラシックデザイン(Excelアプリケーションスコープ + DataTable)

「Excelアプリケーションスコープ」+「範囲を読み込み」でDataTable型変数に表データを読み込み、「繰り返し(データテーブルの各行)」にて繰り返し、最後に「Excelアプリケーションスコープ」+「範囲に書き込み」でFinish。

読込処理 繰り返し処理 保存処理
読込処理 繰り返し処理 出力処理

3番:Studioのモダンデザイン(Excelプロセススコープ + DataTable)

「Excelプロセススコープ」内で、「Excelファイルを使用」+「範囲を読み込み」でDataTable型変数に表データを読み込み、「繰り返し(データテーブルの各行)」にて繰り返し、最後に「データテーブルをExcelに書き込み」でFinish。

読込処理 繰り返し処理 保存処理
読込処理 繰り返し処理 出力処理

4番&5番:StudioX(Excelプロセススコープ + Excelの繰り返し(各行))

「Excelプロセススコープ」内で、「Excelファイルを使用」+「繰り返し(Excelの各行)」にて、繰り返し処理内で「セルに書き込み」まで行いFinish。

読込処理 繰り返し処理 保存処理
読込処理 繰り返し処理 ←と同じフロー内で実施


6番:StudioX(Excelプロセススコープ + DataTable)

「Excelプロセススコープ」内で、「Excelファイルを使用」+「範囲を読み込み」でDataTable型変数に表データを読み込み、「繰り返し(データテーブルの各行)」にて繰り返し、最後に「データテーブルをExcelに書き込み」でFinish。

読込処理 繰り返し処理 保存処理
読込処理 繰り返し処理 出力処理

事前予想

Twitterで予想投票をしてみました。

人気 番号 特徴
1番人気 2番 Studioクラシック (Excelアプリケーションスコープ(可視OFF) + DataTable)
2番人気 6番 StudioX (Excelプロセススコープ(可視OFF) + DataTable)
3番人気 3番 Studioモダン(Excelプロセススコープ(可視OFF) + DataTable)

Studioクラシック(Excel App Scope + DataTable)が根強い人気ですが、StudioXもStudioモダンも期待されているようですね!それでは本戦行ってみましょう!

UiPath Excel Performance選手権開催!!


第1回戦 (Excel 100件繰り返し)

初戦はExcel 100件分の繰り返し処理です!結果は如何に・・・!!

順位 秒数 番号 通り名 Tool 種別 プロパティ等
1位🥇 9.708秒 6番 反逆のX StudioX モダン Excelプロセススコープ(可視OFF) + DataTable
2位🥈 9.748秒 2番 見えなくたって Studio クラシック Excelアプリケーションスコープ(可視オプションOFF) + DataTable
3位🥉 9.917秒 1番 UiPathの顔 Studio クラシック Excelアプリケーションスコープ(可視オプションON) + DataTable
4位 10.570秒 3番 期待の新星 Studio モダン Excelプロセススコープ(可視OFF) + DataTable
5位 17.640秒 5番 Excelの中こっそり見ちゃうよ StudioX モダン Excelプロセススコープ(可視OFF) + Excelの繰り返し(各行)
6位 27.398秒 4番 Excelの中見れちゃうよ StudioX モダン Excelプロセススコープ(可視ON) + Excelの繰り返し(各行)

なんということでしょう。早速の番狂わせ!
6番:StudioX(Excelプロセススコープ(可視OFF) + DataTable)が僅差で一位🥇!
1位~4位まではその差1秒以内の接戦でした!

一方、4番,5番の、StudioXでExcelの繰り返し(各行)を使用したパターンは大きく出遅れる状況に。でも大丈夫、まだ始まったばかり、次頑張ろう。

第2回戦 (Excel 1000件繰り返し)

さて、次はデータ件数が増えて1000件です。先ほどとは違って、まぐれで勝つことが難しい件数です。結果はこちら!

順位 秒数 番号 通り名 Tool 種別 プロパティ等
1位🥇 16.735秒 2番 見えなくたって Studio クラシック Excelアプリケーションスコープ(可視オプションOFF) + DataTable
2位🥈 25.130秒 1番 UiPathの顔 Studio クラシック Excelアプリケーションスコープ(可視オプションON) + DataTable
3位🥉 77.040秒 3番 期待の新星 Studio モダン Excelプロセススコープ(可視OFF) + DataTable
4位 88.291秒 6番 反逆のX StudioX モダン Excelプロセススコープ(可視OFF) + DataTable
5位 98.989秒 5番 Excelの中こっそり見ちゃうよ StudioX モダン Excelプロセススコープ(可視OFF) + Excelの繰り返し(各行)
6位 109.506秒 4番 Excelの中見れちゃうよ StudioX モダン Excelプロセススコープ(可視ON) + Excelの繰り返し(各行)

なんということでしょう。Studio勢で上位独占です。Studio強し。ブラボー。
上位2位までは10秒程度の差ですが、2位と3位では50秒ほど差がついています。

下位の2つは変わらず、Excelの繰り返し(各行)パターンでした。でも頑張ったよね。

さて、最終戦に参りましょう。

最終戦 (Excel 10000件繰り返し)

最終戦はデータ件数が増えて10000件です。実力が問われます。持久力が必要です。
本気出してもらわないと終わらないです。パフォーマンス評価中はPC触れないので困ります。
よろしくです。結果はこちら!

順位 秒数 番号 通り名 Tool 種別 プロパティ等
1位🥇 46.265秒 2番 見えなくたって Studio クラシック Excelアプリケーションスコープ(可視オプションOFF) + DataTable
2位🥈 46.652秒 1番 UiPathの顔 Studio クラシック Excelアプリケーションスコープ(可視オプションON) + DataTable
3位🥉 781.970秒 3番 期待の新星 Studio モダン Excelプロセススコープ(可視OFF) + DataTable
4位 795.470秒 6番 反逆のX StudioX モダン Excelプロセススコープ(可視OFF) + DataTable
5位 1531.445秒 5番 Excelの中こっそり見ちゃうよ StudioX モダン Excelプロセススコープ(可視OFF) + Excelの繰り返し(各行)
6位 1705.792秒 4番 Excelの中見れちゃうよ StudioX モダン Excelプロセススコープ(可視ON) + Excelの繰り返し(各行)

結果、第2回戦と順位変わらず🤨
ただ、第2回戦は3位~6位まで、10秒ずつの差でそこまで開きがなかったですが、今回は1位&2位、3位&4位、5位&6位でおおよそグループが分かれました。

さて、最終結果は・・・!!

最終結果

各回の順位を合計して、最も小さい点だった選手が優勝です。 結果は・・・!

総合順位 番号 特徴 第1回戦 第2回戦 最終戦
1位🥇 2番 Studioクラシック (Excelアプリケーションスコープ(可視OFF) + DataTable) 2位🥈 1位🥇 1位🥇
2位🥈 1番 Studioクラシック (Excelアプリケーションスコープ(可視ON) + DataTable) 3位🥉 2位🥈 2位🥈
3位🥉 6番 StudioX(Excelプロセススコープ(可視OFF) + DataTable) 1位🥇 4位 4位
4位 3番 Studioモダン(Excelプロセススコープ(可視OFF) + DataTable) 4位 3位🥉 3位🥉
5位 4番 StudioX(Excelプロセススコープ(可視OFF) + Excelの繰り返し(各行)) 5位 5位 5位
6位 5番 StudioX(Excelプロセススコープ(可視ON) + Excelの繰り返し(各行)) 6位 6位 6位

1番 「Studio / クラシックデザイン / Excelアプリケーションスコープ(可視OFF) + DataTable」が優勝🥇です🎊✨おめでとうございます🎉✨

賛否ありますが、StudioXも3位🥉入賞です🎉🎉🎉

結果を踏まえて

さて、考察してみましょう。

StudioXは本当に遅いのか?

100件ではまぐれかもしれませんが1番🥇でした✨
また、1000件、10000件でもStudioモダンとそこまで差がない状況でした。

この結果からも、StudioかStudioXかという観点ではそこまで差がないと言えるのではないかと思います。

事前投票でも皆さんが投票した通りでしたね!
つまり、StudioXは遅くない!悪くない!遅い原因は別にある。はず。
ということでもう少し見てみましょう。

可視On/Offで速度差は出るのか?

続いてExcelの可視オプションです。(Excelクライアントアプリを立ち上げて表示するか、非表示状態で処理するか)

今回の結果ではStudioクラシックのExcelアプリケーションスコープでは可視On/Offで速度に差はありませんでした。

ただし、StudioXのExcelプロセススコープ + Excelの繰り返し(各行)では可視ONにすることで10%ほど速度が遅くなる結果となりました。(1000件、10000件の結果より)

Excel処理が遅くなる大きな原因ではなさそうですので、フーン🤔程度に見て次にいきましょう。

DataTableとExcelの繰り返し(各行)で差は出るのか?

ここは圧倒的に差が出ましたね。
Excelの繰り返し(各行)は、一行ずつExcelファイルに対して読み書きを行うため、ファイル入出力分のオーバーヘッドがかかる(処理時間が長くなる)ことが原因かと思います。

データ件数が多い場合に、パフォーマンスを重視するなら、Excelの繰り返し(各行)を使うことは避けたほうがいいかもしれません。

最近のバージョン(22.10以降)では、StudioXでもDataTable系のアクティビティが使えるようになっているため、少し難しいかもしれませんがDataTableを使った繰り返し処理を試してみると良いかと思います。

Excel操作のパフォーマンスが重くなる一番の原因は、Excelの繰り返し(各行)アクティビティ と言っていいでしょう。

クラシックデザインとモダンデザインで速度差は出るのか?

クラシックデザインを「Excelアプリケーションスコープ」
モダンデザインを「Excelプロセススコープ」+「Excelファイルを使用」に置き換えると、

DataTable処理パターンを使った場合でも「Excelアプリケーションスコープ(≒クラシックデザイン)」の方が圧倒的に早い結果となりました。(1000件だと5倍、10000件だと15倍程度の差)

こちらも皆さんの予想通りでしたね。

まとめのまとめ

Excelの繰り返し処理におけるパフォーマンスについて

No 検証結果 パフォーマンス影響
1 StudioとStudioXという、ツールの観点では差はない なし
2 Excelの繰り返し(各行)を使用する場合、「Excelプロセススコープ」の「Excelウィンドウを表示」オプションをFalse(可視OFF)にしたほうが早い 影響小
3 Excelの繰り返し(各行)よりも、繰り返し(データテーブルの各行)のほうが処理速度が早い 影響大
4 モダンデザイン(Excelプロセススコープ)よりも、クラシックデザイン(Excelアプリケーションスコープ)のほうが処理速度は早い 影響大

うーん、結果は出たものものの、モダンよりもクラシックの方が早いとはどうしたものか。。。少しすっきりしない結果になりました。

が、これにてUiPath Excel Performance選手権はお開きにします!

もっと良いやり方あるよ!このプロパティや設定変えれば早くなるよ!という方がいたら是非Twitterなどで教えてください。

最後までお付き合いいただきありがとうございました!

その後


あるタレコミが入りました。続きはこちら ↓