Mic*_*che 3 java string performance
我有一个像这样的for循环:
String myString = "123456789";
String prefix = null;
for (int i=6;i>=0;--i)
{
prefix = myString.substring(0,i);
process(prefix);
}
Run Code Online (Sandbox Code Playgroud)
问题是如果这段代码执行N次,将创建N*7个字符串(每次执行将创建7个字符串 - 因为substring方法创建一个新的String,每次执行调用此方法7次) .我正在考虑如何在这种情况下提高性能.我想知道是否有一种方法每次执行时只使用一个String,每次都要修改它.这是StringBuilder的目的,但我认为StringBuilder在这种情况下没有帮助:
String myString = "123456789";
StringBuilder prefix = new StringBuilder(myString);
for (int i=6;i>=0;--i)
{
prefix.delete(i,prefix.length());
process(prefix.toString());
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,前缀始终引用相同的StringBuilder对象,但同一问题出现在另一个地方,因为prefix.toString()始终返回一个新的String对象.
任何的想法?
(我知道这个话题已经被多次处理了.但是我已经做了一些搜索,但是我没有找到解决方案,也许那是内存的最小使用?)
谢谢你的帮助
虽然myString.substring(0, i)创建新String对象是正确的,但请注意,这不会复制基础角色数据.
在对此代码执行任何操作之前,我将使用分析器来验证这确实是一个瓶颈(无论是在CPU使用方面,还是在垃圾收集器上的压力方面).
| 归档时间: |
|
| 查看次数: |
159 次 |
| 最近记录: |