Hatena::ブログ(Diary)

なにする?DTP+WEB

2009-11-12

2つのスクリプトの速さの違いはどこにある。

ドキュメント上の“塗りに線”を“線”に変更してくれるIllustratorのJavaScript『ヘアラインレタッチ』 | DTPデザイナーの育児日記イラストレータースクリプトの話題があったのだけど、

そこに出てくる2つのスクリプト

イラレで便利さんの『塗り線さがし』と

Mr.Riさん DTP宝箱の『ヘアラインレタッチ』の

実行速度について触れられている。

ふ〜んそうなんだ。

……。

これで終わったんじゃ、この話はここでおしまいなんだけど。

もうちょっと掘り下げて、両方のスクリプトを読んでみてわかったことを書いてみる。

f:id:kamiseto:20091112121531p:image

両方のスクリプト共にまず

スクリプトの最初に

var X = (new Date).getTime();

最後に

var Y = (new Date).getTime();
alert(Y-X);

を挿入にて実行速度を測ってみる。

それぞれ、

「塗り線さがし.jsx」

f:id:kamiseto:20091112121535p:image

「ヘアラインレタッチAICS2.jsx」

f:id:kamiseto:20091112121533p:image

と結果が出た。

確かに圧倒的な差が出ています。


スクリプトの何処で、そんなに差がつくのか、

実際にスクリプトを読み進めてる。

う〜ん。

人それぞれ書き方に個性が出ていておもしろい。

いや、そんなことじゃなくて。

そこで引っかかったのが、以前書いたエントリー

app.activeDocument.pathItemsやapp.activeDocument.pageItemsは遅い

ということで、

ちょっと失礼して「塗り線さがし.jsx」の40行目あたりに3行ほど追加。

var P = [];
for( var i=0; i<searchObj.length; i++ )P.push(searchObj[i]);
searchObj = P;

実行速度を測ってみる。

f:id:kamiseto:20091112121534p:image


うん早くなった。

それでも、『ヘアラインレタッチ』の方がまだ半分の速さだ。

う〜ん。

milligrammemilligramme 2009/11/12 13:09 こんにちは、実行速度の図、1個目と2個目が逆みたいです。
Illustratorのデータチェックスクリプトって、作り手がとんでもない暴れん坊なデータつくってくるのを想定して実行速度も重要視しなくてはいけないのですね。

kamisetokamiseto 2009/11/12 14:56 >>こんにちは、実行速度の図、1個目と2個目が逆みたいです。
ありがとうございます。直しておきました。
暴れん坊なデーター程チェックが必要なことろが悩みどころです。

ちょっとした違いでこれだけ速度がちがうのは
かんべんしてほしいところですが…それがプログラムの醍醐味なんですかねぇ。アドビ様。

Mr.RiMr.Ri 2009/11/13 11:12 Mr.Riです。さきほど、AI JavaScript を爆速化するためのサンプルをアップしました。コメントが入っているので、わかりやすいかと思います。トップページからダウンロードできます。参考になさってください。

kamisetokamiseto 2009/11/13 12:16 Mr.Riさん。
さっそくサンプルを見ました。
丁寧なコメントを付けていただきありがとうござます。
とても参考になりました。
レイヤー毎に処理していくことで、表示に負荷がかからなくて
高速化できるということでしょうか。

Mr.RiMr.Ri 2009/11/13 18:10 理由がよく分かっている訳ではないですが、イラストレーターがドキュメント上のすべてのパスを配列として用意する仕組みは、とても遅いということは確かです。おそらくですが、配列を新たに作成し直しているのではないでしょうか。サンプルは、その仕組みに完全に置き換えるルーチンを用意したにすぎません。ようするに余計な処理をスキップしたという訳です。同じことはインデザインにもいえて、やはりオブジェクトを階層毎に処理していくことで、10倍前後は高速化できます。ヘアラインレタッチ1.2のインデザイン版では、その仕組みを取り入れて早くしています。

kamisetokamiseto 2009/11/13 21:36 解説ありがとうございます。
なるほど。インデザインも同じなんですね。
イラストレーターだけ駄目な子かと思ってました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

テキストに文字スタイル[なし]を適用するやつ。キーボードショート ...
//id_disapplyChacracterStyle.jsx 2017.12.14 (z-)ver.b //文字スタイル[なし]を適用する &nbsp; function pepsi&am
ver_d ファイル名で示す規定値でオブジェクトを等間隔に分布するやつ
//id_distribute_=_0mm.jsx 2017.06.23(z-)ver_d //規定値で等間隔に分布する //規定値はスクリプトのファイル名で指定する //ファイル名は &qu
プロパティまとめて見るやつ
//魁_プロパティ高校3 2017.11.7 (z-) //プロパティまとめて見るやつ &nbsp; #target indesign #targetengine &quot;prop
選択ハニー内の正規表現検索結果の数字を増減するやつ。図番号ズレ訂 ...
//id_numberShifter.jsx 2017.10.18 by (z-) //GREP検索結果または選択した文字列の番号を増減するやつ ////GREP検索文字列欄が空欄なら選択した文字列を
入力値ぶん選択段落内のタブ位置をぜんぶずらすやつ
// id_tabStopShifter.jsx 2017.09.28(z-) //入力値ぶん選択段落内のタブ送り位置をぜんぶずらすやつ &nbsp; function pepsi&#
この日記のはてなブックマーク数
Connection: close