StringBuilder花时间存储String值

时间:2016-02-09 14:55:58

标签: java string hadoop hdfs stringbuilder

我将我的日志存储到StringBuilder对象中。有大约214873行存储。每次代码发现错误时,错误消息都存储在StringBuilder对象中,并附加以用于下一个错误。

最后记录所有错误消息。 StringBuilder对象中的行被写入hdfs。我面临的问题是,将完整的错误信息存储到StringBuilder对象需要6个小时。有什么办法可以减少存储时间,以便在生产集群中运行代码胖子?

提前致谢。

1 个答案:

答案 0 :(得分:1)

我可以添加到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

这一次只写一个字符,所以它应该比这更长。