我有以下为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 的实例。在找到这些实例时,它分别将它们替换为 0xFF 和 0x24,将其放入新的字符串removedFudge中。
这种方法占用了大量的 CPU 时间,并且在使用嵌入在 Eclipse 中的 Java 分析器 DDMS 时,它告诉我 53% 的方法时间花费了:
java/lang/StringBuilder. (Ljava/lang/String;)V
这似乎是说它正在占用初始化字符串的时间,但是当我将已经初始化的字符串传递给它以放入新消息时,我看不到初始化字符串的来源。
有谁是 DDMS 方面的专家?