2012年7月19日木曜日

iPadでは大きな画像のリサイズが遅い

やることが多くて忙しかったので、久しぶりの投稿です。コンテンツ待ちで保留中の、Titanium Mobileを使ったiPadアプリですが、少しずつ動き出しました。新しいiPadを入手して、レチナ・ディスプレイでもテストしたら、思いがけない発見がありました。

 

レチナではない普通のディスプレイでは普通に動いていたアプリですが、レチナ・ディスプレイで動かしたら、処理が極端に遅い部分を発見しました。普通のディスプレイだと1秒ぐらいで終わる処理が、数秒間も余計に待たされるのです。あきらかに遅く、このままでは公開できないほどでした。

遅い原因が分からないので、どの部分が遅いのか、まずは調べることにしました。メッセージを表示するためのラベルを追加して、処理の区切りごとに英字を表示させます。こうすると、どの部分で遅いのか簡単に特定できますから。実際に試してみると、予想もしない部分で遅くなっていました。この投稿のタイトルに書いたとおり、大きな画像のリサイズです。

 

このアプリは、コンテンツである画像の表示がメインとなります。用意した画像を画面いっぱいに表示したり、レイアウトの一部として画像を含め、縮小して表示したりします。画像の大きさは、普通のディスプレイ用の1024×768ピクセルと、レチナ・ディスプレイ対応版の2048×1536ピクセルの両方を用意しています。そのためレチナ・ディスプレイでは、2048×1536ピクセルの画像をリサイズして表示することになります。GPUを使わずCPUで処理しているためでしょうか、明らかに時間がかかっています。

本当にリサイズが重くて遅くなっているのか、リサイズした画像を追加して、リサイズ処理をなくしてみました。すると予想どおり、数秒間の待ちが完全に消えました。やはり大きな画像のリサイズが重かったのでした。パソコン用のCPUではなく、携帯電話用のCPUですから負荷が大きいのでしょう。

 

レチナ・ディスプレイに対応するため画像サイズが大きくなり、さらに画像の数が多いので、できるだけ容量を増やさないようにと考慮し、画像をリサイズして使う設計にしました。しかし、そんな方法が裏目に出てしまいました。処理が遅くないように作らないとイライラして使えません。容量が増えてしまいますが、リサイズした画像を追加で全部用意することにしました。

パソコンと違って、まだまだ考慮すべき点があるのですね。勉強になりました。

0 件のコメント:

コメントを投稿