2つのスクリプトの速さの違いはどこにある。
ドキュメント上の“塗りに線”を“線”に変更してくれるIllustratorのJavaScript『ヘアラインレタッチ』 | DTPデザイナーの育児日記でイラストレーターのスクリプトの話題があったのだけど、
そこに出てくる2つのスクリプト、
イラレで便利さんの『塗り線さがし』と
Mr.Riさん DTP宝箱の『ヘアラインレタッチ』の
実行速度について触れられている。
ふ〜んそうなんだ。
……。
これで終わったんじゃ、この話はここでおしまいなんだけど。
もうちょっと掘り下げて、両方のスクリプトを読んでみてわかったことを書いてみる。
両方のスクリプト共にまず
スクリプトの最初に
var X = (new Date).getTime();
最後に
var Y = (new Date).getTime(); alert(Y-X);
を挿入にて実行速度を測ってみる。
それぞれ、
「塗り線さがし.jsx」
「ヘアラインレタッチAICS2.jsx」
と結果が出た。
確かに圧倒的な差が出ています。
スクリプトの何処で、そんなに差がつくのか、
実際にスクリプトを読み進めてる。
う〜ん。
人それぞれ書き方に個性が出ていておもしろい。
いや、そんなことじゃなくて。
そこで引っかかったのが、以前書いたエントリー
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;
うん早くなった。
それでも、『ヘアラインレタッチ』の方がまだ半分の速さだ。
う〜ん。