何となく間に合わない予感がしていたので先送りしていたTitanium mobile Advent Calendar 2012、前倒しで参加表明したら、案の定ネタが思い浮かばないうちに当日になってしまいました。
大丈夫。こういうときは、自作便利関数ライブラリを公開するといいっておじいちゃんが言ってたので、ボクのutil.jsの中身を公開します。
文字列をあれこれする便利関数
前後の空白を削除するとか、改行を落とすとか。
ちなみに、見落としがちですが、printfはGlobal.Stringとしてあらかじめ定義されています。
var_dump
PHPでいうところのvar_dump、オブジェクトの中身が見たいときは、
Ti.API.debug(JSON.stringify(obj));
という具合にすれば見られる。
Ti.API.debug(obj); で見られた牧歌的な時代もあったらしいけど、今試してみたらやっぱりダメだった。
速度の計測
できあがったアプリがなんか遅いのでチューニングが必要だ、となった場合、「推測するな,計測せよ」の原則に従って、まずどこに時間がかかっているのが鉄則です。
ということで、処理時間を計測するためのコード。
こういうふうにして使います。
var trace = new util.TraceLog; trace.start('hoge handler'); //時間がかかってそうな処理1 trace.lap('hoge handler 1'); //時間がかかってそうな処理2 trace.lap('hoge handler 2'); //時間がかかってそうな処理3 trace.stop('hoge handler');
そうすると、こういうログが得られます。
12-08 02:07:14.035: D/TiAPI(25391): [hoge handler] has started 12-08 02:07:14.039: D/TiAPI(25391): [hoge handler 1] has passed at 2ms 12-08 02:07:14.137: D/TiAPI(25391): [hoge handler 2] has passed at 100ms 12-08 02:07:14.137: D/TiAPI(25391): [hoge handler] has finished at 100ms
処理に時間がかかっているのは「時間がかかってそうな処理2」の部分だ!ということが一目瞭然になります。
さらにtrace.lapをつっこんで犯人を絞り込むもよし、十分にわかったのであれば腕をふるって高速化に着手するもよしですね。
明日は@tady_jpさんですね。よろしくお願いしますー。