有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java StringBuilder花时间存储字符串值

我将日志存储到StringBuilder对象中。几乎有214873行正在被存储。每次代码发现错误时,错误消息都存储在StringBuilder对象中,并附加到下一个错误中,依此类推

最后,当所有错误消息都被记录时。StringBuilder对象中的行将写入hdfs。我面临的问题是,将完整的错误消息存储到StringBuilder对象需要6个小时。是否有任何方法可以减少存储时间,以便在生产集群中运行代码转换器

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    我可以添加到StringBuilder的最大大小是整数。最大尺寸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
    

    这是一次只写一个字符,所以它确实需要更长的时间