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 - 如果文件中的字符串可能包含任意字符,您将如何分隔它们?

hadoop - 错误 : IO_ERROR : java. io.IOException:连接 Oozie 服务器时出错

java - 如何修复此错误 AAPT2 错误 : check logs for details?

java - 有没有一种方法可以在Java中发送电子邮件,其中HTML电子邮件中的jpeg图像会自动下载并显示在outlook中?

string - 对字符向量的 strsplit 进行 sapply 的替代方法

sql - 用于我的查询的 StringBuffer 或 StringBuilder

linux - hadoop 配置 : couldn load or find main class org. apache.hadoop

sql - hive 加入选择非常慢

java - 带种子的 MongoClient 构造函数

java - org.xml.sax.SAXParseException : Content is not allowed in prolog