Scintilla.NET 加载缓慢

Posted

技术标签:

【中文标题】Scintilla.NET 加载缓慢【英文标题】:Scintilla.NET slow loading 【发布时间】:2010-12-16 15:56:05 【问题描述】:

我正在使用名为 Scintilla.NET 的 .NET 包装器使用 Scintilla。创建它的实例时,即:

   Dim c As New ScintillaNet.Scintilla
   Me.Controls.Add(c)

第一次加载几乎需要一秒钟。其他时候大约是 150 毫秒。实际上,这在我的情况下是不可接受的,例如加载一次 10 个文件几乎需要两秒钟。

Scintilla(或 Scintilla.NET)确实很慢,还是我做错了什么?

【问题讨论】:

我对 Scintilla 不太熟悉,但也许实际上不能一次打开 10 个文件,因为它们可能不会一次全部显示(我想有一个选项卡接口涉及某处?),而是在需要时加载它们中的每一个(即,当活动选项卡更改为代表该文档的选项卡时)。这就是我最近在我的一个应用程序中所做的,并获得了一个非常流畅的界面,可以“懒惰地”加载其数据。当然,提供“加载”指示器也会减少感知时间,即使实际 ms 相同甚至更大。 它确实是一个选项卡式编辑器。我不太喜欢你所说的延迟加载,但也许这是一个有趣的解决方案,因为你可以将加载时间分散到更长的时间段,而不是一次两秒。 【参考方案1】:

我不会说 Scintilla 很慢。如果只是在第一次创建控件时很慢,这可能是因为当时加载了 Scintilla.dll,而您所经历的 1 秒可能是系统加载 dll 所需的时间。

如果是这种情况,我建议您在应用程序启动时(例如在初始屏幕上)加载 dll(通过创建虚拟控件) - 如果这在您的场景中是可以接受的。

【讨论】:

事实上,我已经在这样做了。这解决了第一次加载,但所有其他实例仍会导致约 150 毫秒的冻结时间。因此,当一次创建多个控件时,它会使我的应用程序挂起相当长的时间。 在这种情况下,150 毫秒可能是实例化控件所需的时间,因此在这种情况下您无需进行太多优化。

以上是关于Scintilla.NET 加载缓慢的主要内容,如果未能解决你的问题,请参考以下文章

Scintilla.NET 基于正则表达式的语法高亮

Scintilla.NET Autocomplete 自动选择第一个元素 (C#)

检测光标位于 Scintilla NET 中的注释或字符串上方

缓慢的 UIViewController 加载时间(缓慢的 ClientState 警告)

vue 首次加载缓慢/刷新后加载缓慢 原因及解决方案

UIcollectionView 具有缓慢的图像加载和滚动