java - StringBuilder花时间存储字符串值

标签 java string hadoop hdfs stringbuilder

我的日志存储在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/

相关文章:

java - 如何有选择地导入Spring托管组件?

hadoop - 所有 map task 均达到100%,但仍处于运行状态

hadoop - 如何在hadoop中更改mapreduce的输出格式?

java - final方法是内联的?

java - 在struts 2中输入错误类型时出错

java - 无法从 START_ARRAY token 中反序列化 java.util.HashMap 的实例

c++ - 每次溢出的 char 数组都会覆盖完全相同的字符串 - 为什么?

java - 将文件添加到字符串?

string - VBA 范围和字符串混淆

windows - 我无法从本地计算机ping Windows Azure VM的VIP