gpt4 book ai didi

java - Readline 太慢了——还有更快的吗?

转载 作者:数据小太阳 更新时间:2023-10-29 01:53:51 30 4
gpt4 key购买 nike

我正在使用 BufferedReader 和 InputStreamReader 从流中读取数据,以创建一个由读取器创建的长字符串。它最多超过 100,000 行,然后抛出 500 错误(服务器调用失败)。我不确定是什么问题,有没有比这种方法更快的方法?当行数为数千时它会起作用,但我正在处理大型数据集。

BufferedReader in = new BufferedReader(new InputStreamReader(newConnect.getInputStream()));
String inputLine;
String xmlObject = "";
StringBuffer str = new StringBuffer();

while ((inputLine = in.readLine()) != null) {
str.append(inputLine);
str.toString();
}
in.close();

提前致谢

最佳答案

to create one long string that gets created from the readers.

您是否有机会这样做来创建您的“长字符串”?

String string;
while(...)
string+=whateverComesFromTheSocket;

如果是,则改成

StringBuilder str = new StringBuilder(); //Edit:Just changed StringBuffer to StringBuilder
while(...)
str.append(whateverComesFromTheSocket);
String string = str.toString();

字符串对象是不可变的,当您执行 str+="something"时,内存将被重新分配并且 str+"something"被复制到新分配的区域。这是一项代价高昂的操作,运行它 51,000 次是一件非常糟糕的事情。

StringBuffer和StringBuilder是String的可变兄弟,StringBuilder非并发比StringBuffer更高效。

关于java - Readline 太慢了——还有更快的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7756417/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com