有人能帮上忙吗?如何将大文件(2-5MB)加载到SynEdit/UniSynEdit中,并且不让应用程序卡住,以使快速工作?有虚拟模式吗?
谢谢!
发布于 2011-06-09 01:40:45
如果调整大小很慢,问题不是加载,而是渲染。文本已经在内存中了,但是组件必须从屏幕上开始计算每一行。如果编辑器的这一部分没有优化,它可能会很慢(特别是如果它确实为屏幕上的每一行或每一个单词分配了许多小字符串)。
我怀疑有了分析器,你会发现大部分时间都花在这里了。但我没有看到任何其他方法来处理它,没有重大的代码修改。在SynEdit中没有所谓的“虚拟模式”:它加载并渲染内存中的所有行。
你可以试试号称比原来的SynEdit更快的Letterpress version。但是它使用了相同的包装逻辑,所以我猜这不会有太大的不同。
如果你使用的是Delphi6-7版本的编译器,请使用FastMM4作为你的内存管理器: SynEdit做了大量的内存分配,并且旧的BorlandMM比FastMM4慢得多。在现代版本的Delphi中,FastMM4是默认的MM (内存管理器)。
https://stackoverflow.com/questions/6280513
复制相似问题