2009-10-28 118 views
1

我正在编写我自己的文本编辑器,我想知道如何使它加载速度更快。 Notepad.exe巫婆附带Windows加载几乎立即,它是一个小应用程序(在XP是67.5KB),我知道我的应用程序是一个MDI项目,但它有〜900KB,它在5秒钟内加载。我可以编写一个包含所有位图的DLL并从那里加载它们,但我不知道这是解决方案。 任何人有任何ideea?项目加载速度更快

感谢

+0

你确定它不是你自己的初始化代码使用一些时间吗?只需加载一个900kb的exe文件不需要5秒钟。 – 2009-10-28 02:49:47

+4

这里有一些启动速度提示:http://stackoverflow.com/questions/1115421/how-to-increase-the-startup-speed-of-the-delphi-app – 2009-10-28 02:54:02

+0

我在这里把事件日志(EventLog (ped.exe).txt)http://rigo.ro/temp/ 它加载和卸载很多次E_SKU327.dll和E_DAUDF1.dll – 2009-10-29 10:15:42

回答

1

我注意到,我的项目负荷E_SKU327.dll和E_DAUDF1.dll 20倍左右,那些文件属于共享的打印机(爱普生Stylus),所以我从我的形式取出TPageSetupDialog,并立即加载:)

问题解决了 :)

+0

我没有那么多的空闲时间,只有现在我已经注意到了这一点 – 2009-10-29 10:29:59

1

通常情况下,它的感知速度是很重要的,而不是实际的速度。如果您可以尽快获得启动画面并继续初始化,那么人们会看到更快。

另一个窍门是把大部分代码到DLL和运行您的程序在Windows启动时具有特殊的无形模式:

myprog.exe /sneaky 

可以说服的Windows,使得下一次离开你的DLL文件在内存中你的应用程序启动,速度更快。

甚至在隐藏模式下保持内存运行,并且当用户自己运行myprog.exe时,只需让自己可见即可。

再一次,为大部分功能使用延迟加载DLL(我们在UNIX下使用了这个DLL),以便它只在需要时加载。这会在整个执行时间内分摊加载过程,而不是在启动时大受打击。

这些都是我听说过的一些技巧,可能还有其他的。

+2

我认为“偷偷摸摸”的模式是滥用用户,除非你绝对*知道*他们将使用您的程序。这意味着你迫使用户在每次启动时都等待你的程序,无论他们是否使用它。 – JosephStyons 2009-10-28 13:22:52

+0

是的,它是用户滥用。这是我摆脱应用程序的第一件事情之一,我不经常运行(当然不是OOo,我使用它太多)。但它是一个狗吃狗的世界,如果它让你的应用看起来更快,这是一个有效的方法。 – paxdiablo 2009-10-28 13:32:37

3

在我的一个项目中,我通过禁用窗体的自动创建而大大缩短了加载时间。只有在DPR中创建了mainform,其他所有的都是在需要时创建的。

+0

我已经这样做:) – 2009-10-29 10:06:16

0

尝试省略开始和初始化部分的代码,并查看是否有任何改进,然后检查哪一部分使您的应用程序在此情况下加载速度较慢。

如果您在打开文本文件的情况下测试启动时间,请尝试用SynEdit替换TMEMO(如果您使用的话),它甚至可以从记事本中加载文本文件;-)。

1

所有性能问题都可以通过查看执行的代码来解决。

猜测造成性能问题的原因可能是您长时间旋转车轮。当你遇到性能问题时,你需要分析你的代码。德尔福有各种工具可以帮助你做到这一点。

其中一些是:在讨论

这些和其它选项此Stack Overflow Question

有各种技术,以加快一次编码你已经确定了问题所在。既然你已经确定了你想要改进的区域,那么就应该对你的应用程序启动进行简介。

您可能会发现您创建的东西,例如表单,资源或其他对象不需要在启动时创建。

通常,应用程序有多种方式可以启动。由于你的应用程序是一个文本编辑器,我怀疑你可能有一个命令行,你可以指定你想要编辑的文件。分析不同的方式来启动应用程序是确保真正了解性能改进的所有影响的关键。