Androidアプリケーション用に作成された次のJavaメソッドがあります。
private String removeWifiFudge(String message, String removedFudge)
{
int find1 = 255; //FF
int find2 = 0; //00
int find3 = 204; //CC
int find4 = 36; //24
char[] charMessage = message.toCharArray();
boolean find1True = false;
for (char eachCharacter : charMessage)
{
if (find1True)
{
if ((int) eachCharacter == find2)
{
removedFudge = removedFudge + String.valueOf((char)find1);
}
else
{
if ((int) eachCharacter == find3)
{
removedFudge = removedFudge + String.valueOf((char)find4);
}
else
{
removedFudge = removedFudge + String.valueOf((char)find1);
removedFudge = removedFudge + String.valueOf(eachCharacter);
}
}
find1True = false;
}
else
{
if ((int) eachCharacter == find1)
{
find1True = true;
}
else
{
removedFudge = removedFudge + String.valueOf(eachCharacter);
}
}
}
return removedFudge;
}
簡単に言えば、文字列、メッセージを受け取り、0xFF00 と 0xFFCC のインスタンスを 1 文字ずつ検索します。これらのインスタンスを見つけると、それぞれ 0xFF と 0x24 に置き換え、新しい文字列removedFudgeに入れます。
このメソッドは CPU 時間のかなりの割合を占めており、Eclipse に埋め込まれた Java プロファイラーである DDMS を使用すると、メソッド時間の 53% が費やされていることがわかりました。
java/lang/StringBuilder. (Ljava/lang/String;)V
これは、文字列の初期化に時間がかかっていると言っているようですが、既に初期化された文字列を渡して新しいメッセージを入れるため、初期化文字列がどこから来ているのかわかりません。
DDMSの専門家はいますか?