歴代のiPhoneの中では、全ての面で最速だと思っていたiPhone4が、Quartzで画像を描画すると異常に遅い事に気づきました・・・。
POPINOのアプリで、独自のViewを表示している所はQuartzで描画しているので、これは痛い・・・。
どうにか対応方法が無いかと探し中ですが、Developer Forumでもいくつか投稿があり、AppleへBugとしてレポートを出している人もいるようです。
原因の1つとしては、解像度が上がったiPhone4のRetinaディスプレイへのAPIでの対応が考えられます。
Appleのドキュメントによると、画像を描画するAPIに関しては、ハイレゾ対応がされているという事で、その辺りの判定や画像のスケールの変更の処理の関係で、何らかの条件で遅くなる事があるようです。
何かベンチマークが取れないかと、単一の画像を60回描画するような処理を、iPhone4、iPhone3GSで実行して、drawRectの最初と最後の時間を計算してみたんですが、この場合はiPhone4が速く、どういった条件で遅くなるのかが不明です。
色んな画像を描くと遅くなるのか、それとも別の条件があるのか、ベンチマークの取り方が悪いのか(!?)、今ひとつ決定的な理由や解決策は分かりません。
Forumでは5倍くらい遅くなったというような書き込みもあって、確かにiPhone4とiPhone3GSで同じアプリを動かしても、全然動作速度が違ってますし、Instrumentsでパフォーマンスをチェックしてみると、iPhone4だけdrawRectで異常に時間がかかってたりします。
海外のデベロッパーでは一部アプリの公開を停止している人もいるようで、もし、iPhone 3GSからiPhone4に乗り換えて、遅くなったと感じるアプリがあれば、その原因はQuartzにありそうです。
AppleがiOSのバージョンアップで対応してくれるのが一番ですが、何かしらの対応がされるのか(対応可能なのか)や、いつになるのか分からないのを待っていてもしょうがないので、現状できる事を、試しやすい所からちょこちょこと試しつつ、少しづつパフォーマンスを改善してますが、それでもiPhone 3GSの方が速い・・・。
だんだんと機種も増えて来て、テストも難しくなってきました。
最近のコメント