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
这是一次只写一个字符,所以它确实应该花费更长的时间。
我将日志存储到 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
这是一次只写一个字符,所以它确实应该花费更长的时间。