【问题标题】:Delphi. SynEdit - load big files. Virtual mode? [closed]德尔福。 SynEdit - 加载大文件。虚拟模式? [关闭]
【发布时间】:2011-06-08 14:36:07
【问题描述】:

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

谢谢!!!

【问题讨论】:

  • 加载一个 2-5MB 的文件应该是闪电般的恕我直言。
  • 我不需要点亮任何东西。但是如果我调整一个窗口的大小(Synedit 有 alClient),应用程序就会卡住。
  • 和 SynEdit 加载大文件太慢了。
  • 你的意思是你不需要突出任何东西?
  • 是的,我不需要,只需加载并显示文本

标签: file delphi virtual synedit


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多