0

有人可以帮忙吗?如何将大文件 (2-5 MB) 加载到 SynEdit/UniSynEdit 中并且不让应用程序卡住,以便快速工作?有虚拟模式吗?

谢谢!!!

4

1 回答 1

1

如果调整大小很慢,则问题不是加载,而是渲染。文本已经在内存中,但组件必须计算从屏幕开始的每一行。如果编辑器的这一部分没有优化,它可能会很慢(特别是如果它确实为屏幕上的每一行或每个单词分配了很多小字符串)。

该组件的瓶颈是当您使用文本自动换行时:TSynWordWrapPlugin.DoWrapLine方法 '(完成所有工作)确实依赖荧光笔并将标记所有文本。我怀疑使用分析器,您会发现大部分时间都花在了这里。但是我没有看到任何其他处理它的方法,没有主要的代码修改。SynEdit 中没有所谓的“虚拟模式”:它在内存中加载所有行并渲染所有行。

你可以试试Letterpress 版本,它声称比原来的 SynEdit 更快。但它使用相同的包装逻辑,所以我想不会有很大的不同。

如果您使用的是 Delphi 6 - 7 版本的编译器,请使用 FastMM4 作为内存管理器:SynEdit 会分配大量内存,而较旧的 BorlandMM 比 FastMM4 慢得多。在现代版的 Delphi 中,FastMM4 是默认的 MM(内存管理器)。

于 2011-06-08T17:40:45.023 回答