gpt4 book ai didi

java - BufferedReader readLine() 方法花费了很多时间

转载 作者:行者123 更新时间:2023-11-30 03:30:51 24 4
gpt4 key购买 nike

我正在从进程中获取 InputStream 并通过 BufferedReader 读取它。尽管在 while 循环中,br 只有一行,但花费了将近 1 分钟。我通过打印之前和之后检查了这一点,如下面的代码所示。

String[] sendCommand = { "/bin/bash", "/Users/apple/Downloads/yowsup-e56f2d28f38c7961a2ccf7df588462f1c9588edf/sendmessage.sh"};
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.directory(new File("/Users/apple/Downloads/yowsup-e56f2d28f38c7961a2ccf7df588462f1c9588edf"));
processBuilder.environment().put("PYTHONPATH", "/Users/apple/Downloads/yowsup-e56f2d28f38c7961a2ccf7df588462f1c9588edf");
processBuilder.command(sendCommand);

Process process = processBuilder.start();
process.waitFor();
InputStream stream = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(stream));
String temp = null;
System.out.println("before");
long start_time = System.currentTimeMillis();
while ((temp = br.readLine()) != null)
{
str = temp;
}
long end_time = System.currentTimeMillis();
long time_taken = end_time-start_time;
System.out.println("after");
System.out.println("Time taken in while loop: "+time_taken/1000);

结果是:

before
after
Time taken in while loop: 67

我想改进所用的时间,因为 1 分钟非常慢。有哪些可能的选择?这取决于我使用的流程吗?请帮助我。

最佳答案

重要的不是阅读,而是写作。 BufferedReader 的运行速度不能比生成输出的速度快。如果没有什么可读的,它就会阻塞。你看错了方向。

NB 你的循环基本上是毫无意义的,或者充其量是非常奇怪的。您正在阅读该过程产生的每一行,并丢弃除最后一行之外的所有内容。您确实应该对每一行都做一些事情吗?

关于java - BufferedReader readLine() 方法花费了很多时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29093485/

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