武藤です。
一人で開発しているので、面白い問題を誰にも話せなくてつらくなって
きたので、書かせてください。
作ったアプリを試すため、ちょっと一泊二日でテスト旅行に出かけます。
それでノートPCに開発環境の準備をしました。emulatorでデバッガをかけると、
Core2Duoのcpuのうち1個が、完全に天井に貼り付き続けるほど負荷が高いこと
に気がつきました。実際、モッサロイドどころか、カタマッタロイドてな
感じでした。(Menuの反応が30秒ぐらいかかる)
普段はCore-i7を使ってるため気がつかなかったようです。
プロファイラのようなものを準備する前に、ビシバシbreakさせてみると、
String.Formatが犯人だとわかりました。
処理させている内容は10個ほどの%.桁数fを含んだ処理で、約1秒に1回です。
実際のコードはこんな感じです。
String postData = String.format(
"uid=%s&curspd=%.2f&maxspd=%.2f&lat=%.10f&lon=%.10f&....続く
その処理をやめるとcpu負荷は20%程度となり正常となりました。
どうやらこの処理だけで1秒近く掛かっている様子。
そんな経験、みなさんにもありませんか? 思わぬところで落とし穴が...
みたいな。
実機ではそういう印象はないので、とりあえず見なかったことにしても
良いのですが、十中八九、本当にそれは遅いんだろうと思っているので、
これから解決に挑みます。さてどうやって??
本来ならJDKのソースを入れてじっくり眺めたいところですが今は
適当にあてずっぽうで対応してみようかと思います。
あ、そんなのjavaの人なら常識ですか? ごめんなさい。。
--
Shigeo Mutoh <
tmh...@gmail.com>
--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、
android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、
android-group-j...@googlegroups.com にメールを送信してください。
詳細については、
http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。