我的日志存储在StringBuilder对象中。将近存储了214873行。每次代码发现错误时,错误消息都存储在StringBuilder对象中,并附加到下一个错误中,依此类推。
最后,在记录所有错误消息时。 StringBuilder对象中的行被写入hdfs。我面临的问题是,将完整的错误消息存储到StringBuilder对象需要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
一次只写一个字符,所以实际上应该花更长的时间。
关于java - StringBuilder花时间存储字符串值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35295152/