0

GUI が外部の C++ 実行可能ファイルと対話する Java アプリケーションを作成しました。

ProcessBuilder を使用して、C++ executsble から GUI に in/out/error を作成してアタッチしています。サイズ 1024 のバッファーを使用しています。Java GUI が 1024 サイズの文字を読み取るときに、C++ が多数の printf ステートメントを使用して非常に高速で実行されている場合はどうでしょうか。これによりボトルネックが発生しますか?

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
        }
    }
4

2 に答える 2

0

バッファーのサイズに関係なく、ボトルネックは残ります。それを回避する唯一の真の方法は、Java 側をできる限り最適化することです。たとえば、十分な間隔で GUI を更新し、時間のギャップを埋めるために必要なだけバッファリングします。通常、頻度が低く、粒度の粗い更新を行うと、スループットが向上します。

于 2013-06-30T11:21:46.997 に答える