もう一人のY君

iPhoneアプリのレビューやアップデートレビューなどを書いています. たまに数学の記事も書きます.

もう一人のY君 MENU

【ショートカット】各アクションの処理時間

181215_00

 今回はショートカットアプリにある各種ショートカットの処理時間について簡単に調べてみました.

 

ショートカット

ショートカット

  • Apple
  • 仕事効率化
  • 無料

※価格は記事執筆時のものです. 現在の価格はApp Storeから確認ください.

 レビュー時のバージョン : v2.1.1

 

スポンサーリンク

 

 

処理時間に関わる要因

 ショートカットアプリではライブラリはもちろん, その先の編集画面でもウィジェットでも, 処理を行っていることを示すアクションを行います.

 

 よくあるプログラミングではそんなことを行わないため, この明らかな「無駄」は全体の処理時間に多大な影響を与えます.

 当然それはタダではありませんし, 余計なメモリも消費します, いづれ設定かなにかでオフにできるようにして欲しいものですね.

 

 見た目に動いてる様子が分かってはじめのうちは面白いんですが, 慣れてくると邪魔でしかありません.

 

 

処理時間を計測

 というわけで実際に大まかですが処理時間を計ってみました.

 と言ってもショートカットアプリには現在処理時間を測るアクションはありません.

 

 

181215_01

 そこで「繰り返す」のアクションで5000回同じ操作を繰り返し, かかった時間をタイマーでアナログに計る手法を取りました.

 例えば「繰り返し」のアクションはこのフロー自身を計測し, 5000で割ったものを1回当たりの処理時間であると考えます.

 

 5000回は多いようで結果的にはアナログ計測するには誤差が気になる回数ではありますが, 例えば1万回となるとメモリ不足など他の影響が大きくなりかねないことを考えこの回数にしました.

 アナログ計測のため, 同じフローを100回計測し, その中央値を取ることにしました.

 

 

181215_02

 「繰り返し」以外のアクションについては, 「繰り返し」の中に対象のアクションを1つ入れて計測し, 上記の「繰り返し」のみのフローで得た時間だけ引いて計算します.

 

 計測環境は iPhone6, iOS12.1, ショートカットのバージョンは2.1.1になります.

 

 同じアクションでライブラリ上と編集画面上で処理時間が異なるため, それぞれ計測しています.

 

 では見てみましょう(アクションごとの性質の問題などあり, すべてを計ってはいません).

 

 

アクション  ライブラリ  編集画面  倍率 
繰り返し  1.06  6.2  5.849 
何もしない  1.88  9.8  5.213 
リスト  2.94  23.4  7.959 
次の場合  1.08  11.6  10.741 
それぞれで繰り返す  0.68  4.8  7.059 
変数に追加  2.04  11.12  5.451 
変数を設定  2.04  11.2  5.490 
計算(1を足す)  2.28  10.8  4.737 
計算(10^x)  2.34  10.6  4.53 
数字  2.28  10.4  4.56 
乱数(0~100)  2.08  11.4  5.48 
テキスト  2.12  10.2  4.81 

 ※ライブラリ及び編集画面での時間単位はmSec

 

 というわけで, 繰り返しなどが遅いと思っていましたが意外と「リスト」アクションや変数アクションがもたつくことがわかりました.

 

 編集画面とライブラリ上での違いは小さいものでも4.5倍以上, 大きいものでは「次の場合」で10倍を超える処理時間の差を確認しました.

 編集画面上で起動した際のあの動きがいかに全体をもたつかせているかよくわかりますね.

 

 

 それでも多くのアクションがたった一つ行うだけでも1mSec以上かかってしまうのはとても遅いですね.

 

 例えばシリアル通信がμSecの世界であることを考えるととてもゆったりしています.

 

 C言語などならあっという間の処理を, ショートカットではその100倍や1000倍もの時間をかけて行っていることになります(もちろんショートカットを介して行う通信はこの限りではありません).