高速化ってのは、ちとおおげさだったかな。
今回、自前のテキスト変換系InDesignスクリプトの
スピードアップ化に挑戦してみました。
とりあえず前回の時間測定用のスクリプトを使ってみると。。
77秒。
うーん目標は1分以内ですかね。。
とりあえず、これも前に紹介したドキュメントを隠すスクリプトを実行。
70秒。。少しだけ速くなったけどもうちょっと速くしたいですね。
Adobe系スクリプトでオブジェクトの数だけ実行するというループの表記で
for (var i=0; i < Object.length; i++)
てのがよくあります。
lengthというのはObjectの要素数を取得するためのプロパティなんですけど
でもこれ実は、ループをまわすたびに要素数を計算しちゃってるんですよね。
なので
var Len = Object.length; for (var i=0; i < Len; i++)
このようにObjectの要素数をfor文の手前で変数に入れてしまうか
for (var i=0,Len = Object.length; i < Len; i++)
for文の初期設定部分で要素数を変数に入れてしまえば、
一回しか要素数の計算をせずに速くなるというわけ。
こういった訂正を全体的に施してみると、、、
キター
60秒切りました!!
というわけで、作ったスクリプトがおっせーなあ、、と思ったら
こういうスピードアップに挑戦してみるといいかも。
コメント