誰でも助けることができますか?大きなファイル (2-5 MB) を SynEdit/UniSynEdit にロードし、アプリケーションがスタックしないようにして高速に作業するにはどうすればよいですか? 仮想モードはありますか?
ありがとう!!!
サイズ変更が遅い場合、問題はロードではなくレンダリングにあります。テキストは既にメモリ内にありますが、コンポーネントは画面上で始まる各行を計算する必要があります。エディターのこの部分が最適化されていない場合、速度が遅くなる可能性があります (特に、画面上の各行または単語に多数の小さな文字列が割り当てられている場合)。
このコンポーネントのボトルネックは、テキスト ワード ラッピングを使用する場合です。TSynWordWrapPlugin.DoWrapLine
メソッド '(すべての作業を行う) はハイライターに依存し、すべてのテキストをトークン化します。プロファイラーを使用すると、ほとんどの時間がここで費やされていることがわかると思います。しかし、コードを大幅に変更しない限り、それを処理する他の方法はありません。SynEdit にはいわゆる「仮想モード」はありません。メモリ内のすべての行をロードしてレンダリングします。
元の SynEdit よりも高速であると主張する Letterpressバージョンを試すことができます。しかし、同じラッピング ロジックを使用しているため、大きな違いはないと思います。
Delphi 6 ~ 7 バージョンのコンパイラを使用している場合は、FastMM4 をメモリ マネージャとして使用してください。SynEdit は多くのメモリ割り当てを行いますが、古い BorlandMM は FastMM4 よりもはるかに低速です。Delphi の最新バージョンでは、FastMM4 がデフォルトの MM (メモリ マネージャー) です。