やりたいこと
PADで検索をすると、「PADは処理が重い」だとか「アクション数を削減したほうがよい」などが検索結果にヒットする。
本当ですか?を検証する。
検証
デスクトップフローの呼び出し時間
デバッグモードの場合 (フロー編集画面から実行)
呼び出し時間は体感で測定。
構成するアクションの種類によって読み込みに時間差が若干ありそうであるが、3~4秒程度で収束している模様。
| アクション数 | 呼び出し時間(s) | 備考 |
| 1 | 1 ~ 2 | |
| 100 | 1 ~ 2 | 同じアクションの複製 |
| 100 | 3 ~ 4 | 数種類のアクションで構成 |
| 1000 | 3 ~ 4 |
公開モードの場合(フロー一覧画面から「▶」で実行)
デバッグモードより少し時間がかかる。
原因は全くわからないが、実行するたびに呼び出し時間が2秒ずつ程増えていく(なぜ?)
| アクション数 | 呼び出し時間(s) | 備考 |
| 1 | 4, 6, 8, 10, 12 |
サブフローの実行時間
デバッグモードの場合
| サブフローの構成 | アクション数 | フロー数 | ループ数 | 総アクション数 | 処理時間(s) | 1フロー当たりの時間(s) |
| 変数定義のみ | 1 | 10 | 100 | 1000 | 86 | 0.086 |
| 変数定義のみ | 1 | 1 | 1000 | 1000 | 118 | 0.118 |
| 変数定義のみ | 10 | 1 | 100 | 1000 | 44 | 0.44 |
| 変数定義 + 入力_文字列3つ | 1 | 1 | 1000 | 1000 | 117 | 0.117 |
| 変数定義 + 出力_5行5列テーブル3つ | 1 | 1 | 1000 | 1000 | 194 | 0.194 |
公開モードの場合
| サブフローの構成 | アクション数 | フロー数 | ループ数 | 総アクション数 | 処理時間(s) | 1フロー当たりの時間(s) |
| 変数定義のみ | 1 | 10 | 100 | 1000 | 0.14 | 0.00014 |
| 変数定義のみ | 1 | 1 | 1000 | 1000 | 0.24 | 0.00024 |
| 変数定義のみ | 10 | 1 | 100 | 1000 | 0.75 | 0.0075 |
| 変数定義 + 入力_文字列3つ | 1 | 1 | 1000 | 1000 | 0.26 | 0.00026 |
| 変数定義 + 出力_5行5列テーブル3つ | 1 | 1 | 1000 | 1000 | 1.22 | 0.00122 |
Webブラウザ操作の実行時間
デバッグモードの場合
| アクション | ループ数 | 実行時間(s) | 1アクション当たりの時間(s) |
| Webページからデータを取得する | 100 | 200 | 2 |
| 新しいChromeを起動する_新規ウィンドウ | 10 | 18.7 | 1.87 |
| 新しいChromeを起動する_フォアグラウンド | 10 | 3.8 | 0.38 |
| 新しいChromeを起動する_URL一致 | 10 | 3.6 | 0.36 |
公開モードの場合
| アクション | ループ数 | 実行時間(s) | 1アクション当たりの時間(s) |
| Webページからデータを取得する | 100 | 199 | 1.99 |
エクセル操作の実行時間
デバッグモードの場合
| アクション | ループ数 | 実行時間(s) | 1アクション当たりの時間(s) |
| Excelワークシートに書き込む | 1000 | 40 | 0.04 |
| Excelワークシートから読み取る | 1000 | 39.5 | 0.395 |
公開モードの場合
| アクション | ループ数 | 実行時間(s) | 1アクション当たりの時間(s) |
| Excelワークシートに書き込む | 1000 | 3.65 | 0.00365 |
| Excelワークシートから読み取る | 1000 | 3.66 | 0.00366 |
まとめ
- デスクトップフローの呼び出しはすこぶる重く、複数回呼び出すと、呼び出し時間のみで簡単に10秒を超える。
- サブフローの実行時間はとても速い。デバッグモードで遅くなるのは、画面の描画処理が発生するためだろう。
- サブフローの定義数、入出力変数の追加についても、処理時間に与える影響は無視できるレベルである。
- Webブラウザの操作はとにかく遅い。しょうがないものであると割り切り、可能な範囲でJavaScript実行アクションでの時間短縮を図りたい。
- Excelへの読み書きは以外にも速い。