StringBuilder 花时间存储字符串值

StringBuilder taking time to store String value

我将日志存储到 StringBuilder 对象中。几乎有 214873 行被存储。每次代码发现错误时,错误消息都存储在 StringBuilder 对象中,并附加到下一个错误等。

最后,当所有错误消息都被记录下来时。 StringBuilder 对象中的行被写入 hdfs。我面临的问题是,将完整的错误消息存储到 StringBuilder object.Is 中需要 6 个小时,我可以通过任何方式减少存储时间,从而 运行 生产集群中的代码更胖?

提前致谢。

我可以添加到 StringBuilder 的最大大小是 Integer.MAX_SIZE-2

public static void main(String[] args) {
    int maxSize = Integer.MAX_VALUE - 2;
    long start = System.currentTimeMillis();
    StringBuilder sb = new StringBuilder(maxSize);
    while (sb.length() < maxSize)
        sb.append(' ');
    long time = System.currentTimeMillis() - start;
    System.out.println("Took " + time / 1e3 + " second to create a StringBuilder of " + sb.length());
}

这会打印

Took 7.415 second to create a StringBuilder of 2147483645

这是一次只写一个字符,所以它确实应该花费更长的时间。