Java缓冲区大小是否会成为瓶颈? 我创建了一个java应用程序,其中GUI与外部C++可执行文件交互。 我使用PuffueBu建器创建和附加/退出/错误从C++执行文件到GUI。我正在使用大小为1024的缓冲区。如果C++在很多Primtf语句中执行速度很高,Java java会读取1024个字符大小。这会造成瓶颈吗 public void run() { try { char[] buffer = new char[1024]; for (int n = reader.read(); n != -1; n = reader.read(buffer)) { writeBytes2Text(buffer, 0, n); } } catch (Exception x) { //some exception } }

Java缓冲区大小是否会成为瓶颈? 我创建了一个java应用程序,其中GUI与外部C++可执行文件交互。 我使用PuffueBu建器创建和附加/退出/错误从C++执行文件到GUI。我正在使用大小为1024的缓冲区。如果C++在很多Primtf语句中执行速度很高,Java java会读取1024个字符大小。这会造成瓶颈吗 public void run() { try { char[] buffer = new char[1024]; for (int n = reader.read(); n != -1; n = reader.read(buffer)) { writeBytes2Text(buffer, 0, n); } } catch (Exception x) { //some exception } },java,c++,Java,C++,无论缓冲区的大小如何,瓶颈都将保持不变。唯一真正的解决方法是尽可能地优化Java端。例如,以适当的间隔更新GUI,尽可能多地缓冲以缩短时间间隔。通常较不频繁、粗粒度的更新会提高吞吐量。1024字节的缓冲区大小可以,但4096可能会稍微好一些 大多数延迟将来自上下文切换、睡眠和唤醒线程。除非Java端缓冲区的大小小得多,否则不会引入吞吐量问题 > C++输出流可能会使用默认的4096字节输出缓冲区。如果C++进程正在慢慢打印输出,则直到4096字节累积为止,才会看到任何输出。p>

无论缓冲区的大小如何,瓶颈都将保持不变。唯一真正的解决方法是尽可能地优化Java端。例如,以适当的间隔更新GUI,尽可能多地缓冲以缩短时间间隔。通常较不频繁、粗粒度的更新会提高吞吐量。

1024字节的缓冲区大小可以,但4096可能会稍微好一些

大多数延迟将来自上下文切换、睡眠和唤醒线程。除非Java端缓冲区的大小小得多,否则不会引入吞吐量问题

<> > C++输出流可能会使用默认的4096字节输出缓冲区。如果C++进程正在慢慢打印输出,则直到4096字节累积为止,才会看到任何输出。p>