字符串和性能

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对象.

任何的想法?

(我知道这个话题已经被多次处理了.但是我已经做了一些搜索,但是我没有找到解决方案,也许那是内存的最小使用?)

谢谢你的帮助

NPE*_*NPE 6

虽然myString.substring(0, i)创建新String对象是正确的,但请注意,这不会复制基础角色数据.

在对此代码执行任何操作之前,我将使用分析器来验证这确实是一个瓶颈(无论是在CPU使用方面,还是在垃圾收集器上的压力方面).