For example, on the Alkitab (Bible) application, I wrote this for debugging:
Log.d("alki", String.format("tebakKitab fase 3: dengan %s:%d skor %d", ref.pendek, ref.pos, skor));
Each of "my operation", involving about 70 calls to the above line, takes about 300 ms. I thought that was acceptable.
But when I tried to build a game engine, I found a bottleneck somewhere that drags the fps. I found it to be the String.format call, which takes about 6ms for just one call! That's ridiculously slow.
Guess what: when I change the above line to:
Log.d("alki", "tebakKitab fase 3: dengan " + ref.pendek + ":" + ref.pos + " skor " + skor);
"my operation" takes only 22 ms!
Okay, once again: Don't use String.format in Android applications!
Note: When I traced method calls to know what makes it slow, String.format apparently calls a very deep code, something with DecimalFormatter, even CurrencyFormatter even though I didn't use it. It also calls com.ibm.icu.** packages. It really has a huge logic inside.
very true, very true
ReplyDeleteBut some strings we can use decimal formatt for example 00.00.00
ReplyDeleteI always had an exception. How do you do this?