我正在编写自己的文本编辑器,我想知道如何才能让它加载更快。 Notepad.exe巫婆几乎立即加载Windows,它是一个小应用程序(在XP上是67.5KB),我知道我的应用程序是一个MDI项目,但它有~900KB,它在5秒内加载。我可以编写一个包含所有位图的DLL并从那里加载它们,但我不认为这是解决方案。 任何人有任何想法吗?
感谢
答案 0 :(得分:3)
在我的一个项目中,我通过禁用表单的自动创建大大减少了加载时间。只在DPR中创建主窗体,所有其他窗体在需要时创建。
答案 1 :(得分:1)
通常,感知速度是重要的,而不是实际的速度。如果你可以尽快获得启动画面并继续初始化,那么人们会看到它更快。
另一个技巧是将大部分代码放入DLL并在Windows启动时使用特殊的隐形模式运行程序:
myprog.exe /sneaky
这可能会说服Windows将您的DLL留在内存中,这样,下次启动应用程序时,它会更快。
甚至在隐身模式下保持在内存中运行,当用户自己运行myprog.exe时,只需让自己可见。
然而,再次使用延迟加载DLL来实现大部分功能(我们在UNIX下使用过这个),因此只在需要时加载它。这会在整个执行时间内分摊加载过程,而不是在启动时大受欢迎。
这些是我听说的一些技巧,可能还有其他技巧。
答案 2 :(得分:1)
所有性能问题都可以通过查看执行的代码来解决。
猜测造成性能问题的原因可能让您长时间旋转车轮。当您遇到性能问题时,需要对代码进行概要分析。 Delphi有各种各样的工具可以帮助你做到这一点。
其中一些是:
中讨论了这些和其他选项一旦确定了问题所在的区域,就有各种加速代码的技术。由于您已确定要改进的区域,因此请对应用程序的启动进行概述。
您可能会发现您在创建时不需要创建表单,资源或其他对象等内容。
通常,应用程序可以启动多种方式。由于您的应用程序是文本编辑器,我怀疑您可能有一个命令行,您可以在其中指定要编辑的文件。分析启动应用程序的不同方法是确保真正了解性能改进的所有影响的关键。
答案 3 :(得分:1)
我注意到我的项目加载E_SKU327.dll和E_DAUDF1.dll大约20次,这些文件属于共享打印机(Epson Stylus),所以我从表单中删除了TPageSetupDialog,它立即加载:)
问题解决了 :)
答案 4 :(得分:0)
尝试省略start和initializations部分的代码,看看是否有任何改进,然后检查在这种情况下哪个部分会使应用程序加载速度变慢。
如果您使用打开文本文件测试启动时间,请尝试用SynEdit替换TMEMO(如果您使用它),它将加快文本文件的速度,甚至可以从记事本中加载;-)。