wxWidgets と Visual C++ を使用して、GUI でリッチ フォーマット (色、フォント、画像) を備えた Unix の "tail -f" を使用するのと同様の機能を作成しています。私は wxMSW と wxMAC の両方をターゲットにしています。
明白な答えは、wxTextCtrl::SetDefaultStyle() と wxTextCtrl::WriteText() への呼び出しを使用して、wxTE_RICH で wxTextCtrl を使用することです。
しかし、リリース モードでコンパイルされた 3 GHz ワークステーションでは、1 行あたり平均 1 ミリ秒増加するログを追跡し続けることができず、最終的には遅れます。各行について、私は負担しています:
- SetDefaultStyle() への 2 回の呼び出し
- 2 つの呼び出し 2 つの WriteText()
- ウィジェットの Freeze() および Thaw() の呼び出し
これを実行すると、約 20,000 行を埋めた後、wxMSW を使用して 1 つのコアで CPU が 100% になります。プログラムは、特定のしきい値に達すると目に見えて遅くなり、さらに遅れをとります。
私は他のコントロール (wxListCtrl、wxRichTextCtrl など) を使用することにオープンです。