2008/03/04(火) [n年前の日記]
#1 [iappli] データファイルの分割サイズを変更
「ダウンロード時間・起動時の画像展開時間が長すぎる」という修正要求が来たので、それに対処。
◎ 画像展開時間への対処。 :
起動時に全ての画像を展開せず、各シーンに入った際に必要な分だけ展開するようにしてみた。50xi用を作ってた時は、ヒープメモリだかネイティブメモリだかが少なかったので、シーンに入ったり抜けたりするたびに、画像展開・画像廃棄を逐一してたのだけど。今回は基本的に90xi以降に対応すればいいらしいので、モノグサ的に、起動時に全部展開してたわけで。
モノグサ的に、とは言ってるけれど。そうしておけば、起動は遅いけど後で待たされることはないというメリットがあるわけで。そのあたり、今回の修正で、さあゲームが始まるぞ、となるところでたっぷり待たされるようになって、これはこれでどうなんだろうという感も。これでいいのであろうか。
本来は何かの処理と並列して画像展開すべきなのかな。と思ったけれど、何か処理してる間に画像展開するとメモリのフラグメントが起きやすくなりそうな不安もあるし。うーん。展開後の画像データが、どういう形でメモリ上に展開されるかが判らんので、事前に必要な分メモリを確保しておく等もできるかどうかよく判らず。たぶん機種毎に違う予感。>展開後のデータのサイズ。うーん。
モノグサ的に、とは言ってるけれど。そうしておけば、起動は遅いけど後で待たされることはないというメリットがあるわけで。そのあたり、今回の修正で、さあゲームが始まるぞ、となるところでたっぷり待たされるようになって、これはこれでどうなんだろうという感も。これでいいのであろうか。
本来は何かの処理と並列して画像展開すべきなのかな。と思ったけれど、何か処理してる間に画像展開するとメモリのフラグメントが起きやすくなりそうな不安もあるし。うーん。展開後の画像データが、どういう形でメモリ上に展開されるかが判らんので、事前に必要な分メモリを確保しておく等もできるかどうかよく判らず。たぶん機種毎に違う予感。>展開後のデータのサイズ。うーん。
◎ ダウンロード時間への対処。 :
たしかに現状では長い。ストップウォッチで計ってみたら、3分ぐらいかかっていてクラクラした。しかし、どうすれば短縮できるのか。スクラッチパッドに入れる画像を削るしかないかな。
と思ってたけど。他のアプリが、スクラッチパッドのほとんどを使ってるように見えるのに、40秒前後でDLできていることを確認。であれば、これは何か解決策があるはず。と思ったところで気がついた。データファイルの分割数が多すぎるのが原因なんじゃなかろうか。試しに分割数を少なくする=1ファイルあたりのサイズを大きくしてみたり。…おおお。劇的に改善。自宅サーバからネット経由でDLしてみたら、こちらも40秒前後になった。
ただ、iアプリの場合、一度のアクセスで読めるHTTP受信データサイズに制約が。DoJa3.0以前は、一度のアクセスで20KByteまで。DoJa3.5以降は、150KByteまで。なんだか怖いので、20KByte以下の分割サイズにしてみたり。ただ、今回の変更で、ダメダメ機種ではメモリが足りなくって落ちるのではないかという不安も。いや、他アプリがこのくらいのDL時間で済んでるということは、分割サイズもそれなりに大きいはずだし。おそらく問題は出ないからそういう状態にしてる、のだろうからたぶん大丈夫、だといいな…。
む。今まで、読み込みバーの増加を、ファイル数を元にして行っていたので、全体的なDL時間は短くなったものの、バーの進み方はちと判りづらくなってしまった。最初に、読み込むべきバイト数が判れば、バイト数を元にした表示もできるのだろうけど。機種によって読み込むデータサイズが違うから…。どうしたもんか…。
と思ってたけど。他のアプリが、スクラッチパッドのほとんどを使ってるように見えるのに、40秒前後でDLできていることを確認。であれば、これは何か解決策があるはず。と思ったところで気がついた。データファイルの分割数が多すぎるのが原因なんじゃなかろうか。試しに分割数を少なくする=1ファイルあたりのサイズを大きくしてみたり。…おおお。劇的に改善。自宅サーバからネット経由でDLしてみたら、こちらも40秒前後になった。
ただ、iアプリの場合、一度のアクセスで読めるHTTP受信データサイズに制約が。DoJa3.0以前は、一度のアクセスで20KByteまで。DoJa3.5以降は、150KByteまで。なんだか怖いので、20KByte以下の分割サイズにしてみたり。ただ、今回の変更で、ダメダメ機種ではメモリが足りなくって落ちるのではないかという不安も。いや、他アプリがこのくらいのDL時間で済んでるということは、分割サイズもそれなりに大きいはずだし。おそらく問題は出ないからそういう状態にしてる、のだろうからたぶん大丈夫、だといいな…。
む。今まで、読み込みバーの増加を、ファイル数を元にして行っていたので、全体的なDL時間は短くなったものの、バーの進み方はちと判りづらくなってしまった。最初に、読み込むべきバイト数が判れば、バイト数を元にした表示もできるのだろうけど。機種によって読み込むデータサイズが違うから…。どうしたもんか…。
[ ツッコむ ]
#2 [java][prog] Javaアプレット上で実験
プロトタイプ版に入っていた、自前で作ったのであろうsin()、cos()を検証していたり。まあ、大体は、ちゃんとしたJavaの関数のソレと同じ値を返してくるので一安心。と思いきや、なぜか cos() の結果の符号が逆。なんでや。画面の上下を逆にするため、であれば、えてして符号を変えるのはsin()のほうだろうし。謎。
arctan、というか atan2() が欲しいなと。それが無いものだから、各種補正をする際の方向算出で面倒なことをしてるわけで。DoJa4.0以降なら用意されてるらしいのだけど、今回はDoJa3.5だし。以前組み込んだこともあるけれど、それは360度=256とか、返る値が4096=1.0とか、プロトタイプ版のアレコレとは異なるソレなわけで。つーか、自前のatan2()を組み込む際に参考にしてたページを今になって読んでみたら、算出の仕方にバグがあった云々と書いてあって、それも検証してみないとあかんなと。
arctan、というか atan2() が欲しいなと。それが無いものだから、各種補正をする際の方向算出で面倒なことをしてるわけで。DoJa4.0以降なら用意されてるらしいのだけど、今回はDoJa3.5だし。以前組み込んだこともあるけれど、それは360度=256とか、返る値が4096=1.0とか、プロトタイプ版のアレコレとは異なるソレなわけで。つーか、自前のatan2()を組み込む際に参考にしてたページを今になって読んでみたら、算出の仕方にバグがあった云々と書いてあって、それも検証してみないとあかんなと。
[ ツッコむ ]
以上、1 日分です。