1 つまたは複数のテキスト コンソール ウィンドウを持つアプリケーションがあり、そのすべてが基本的にシリアル ポート (テキストの入力と出力、文字単位) を表します。これらのウィンドウは、現在のコードの方法で主要なパフォーマンスの問題になりました...私たちは、それらに非常に多くの時間を費やしています。
現在のコードは、ウィンドウに独自の短い寿命を持たせ、メイン アプリケーション スレッドがそれを "SendMessage()" 呼び出しで駆動するように構成されています。このメッセージ パッシングは、信じられないほどのオーバーヘッドの原因のようです。基本的に、OSを迂回するのは間違っていると感じています。
簡単な最適化が既に行われているように、必要に応じてテキスト行全体を描画することに注意してください。
私は Windows コーディングの専門家ではないので、このようなメッセージを送信する以外に、ウィンドウ内のテキストの表示を駆動するアーキテクチャが他にあるかどうかコミュニティに尋ねる必要がありますか? かなり重量級のようです。
主なアプリケーションは移植可能な C/C++/その他の言語プログラムであり、Linux および Solaris でも実行されるため、これは C++ またはプレーン C であることに注意してください。
さらに調査を行ったところ、オーバーヘッドの半分は SendMessage を使用した各メッセージの準備と送信であり、残りの半分は実際の画面描画であると思われます。SendMessage は、同じファイル内の関数間で行われます...
したがって、以下のアドバイスはすべて正しいと思います。
- 再描画されたものを探します
- 物を直接描く
- シリアル コンソールの 10 ~ 20 Hz の更新レートを目指して、すべての文字を画面に送信しないように、時間内に描画操作をチャンクします。
すべての回答を受け入れることができますか?