对我上一个问题的延伸:
我正在清理这个传入的文本,它来自一个带有不规则文本的数据库。这意味着,没有任何标准或规则。有些包含HTML字符,比如,&trade,<,还有一些是以这样的形式出现的:“,-等等。
我使用String.replace替换字符的含义(这应该很好,因为我使用的是UTF-8,对吗?),replaceAll()使用正则表达式删除HTML标记。
除了为每个替换调用replace()函数和编译HTML标记正则表达式之外,是否有任何建议来提高替换的效率?
发布于 2009-02-12 19:23:32
我的第一个建议是衡量最简单的方法(可能是多次替换/替换所有调用)的性能。是的,这可能是低效的。通常,最简单的方法就是效率低下。你需要问问自己:,你有多在乎?
您有样本数据和阈值,在什么时候性能是可以接受的?如果你不这样做,那是第一个停靠港。然后测试天真的实现,看看它是否真的是一个问题。(请记住,字符串替换几乎肯定只是您所做工作的一部分。当您从数据库中获取文本时,这很可能成为瓶颈。)
一旦您确定替换确实是瓶颈,就有必要执行一些测试来查看替换的哪些部分导致了最大的问题--听起来您正在进行几种不同类型的替换。您越能缩小范围,越好:您可能会发现,最简单的代码中真正的瓶颈是由一些容易以相当简单的方式使其高效的东西造成的,而试图优化所有的东西则要困难得多。
发布于 2009-02-12 19:18:21
如果使用replaceAll替换,您将遇到性能瓶颈。
如果你想提高性能
您端的一些代码可能有助于讨论。
String str = ...
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.length(); i++) {
char toAppend = 'a';
switch (str.charAt(i)) {
case '&' : toAppend = '&'; break;
case ...
...
default: toAppend = str.charAt(i);
}
sb.append(toAppend);
}这是来自:Sun论坛
发布于 2009-02-12 19:52:20
字符串替换是Java非常慢,我认为您应该使用更快的语言
这里有代码示例,如何在程序集中替换字符串。
perl/替换-字符串程序集中-code.html
https://stackoverflow.com/questions/542770
复制相似问题