我制作了一个简单的搜索工具,可以搜索计算机中的文件
它有一个函数search
,用于搜索文件并为mainloop
函数创建匹配项列表,而displayForm
函数又调用search
函数,以新形式显示搜索结果。
每当我在启动后第一次运行应用程序时,虽然search
函数在大约1秒内完成搜索,但显示结果窗口所花费的时间需要相当长的时间(大约10秒)。这仅在您启动后第一次搜索时发生。
我没有为search
函数提供任何代码,因为我认为displayForm
函数并不重要,因为无论是第一次还是后续运行它都需要几乎相同的时间,并且 public void displayForm()
{
// Do some stuff here
// Make a listbox and add items to display.
SearchForm.ShowDialog() ;
}
的工作非常简单。
{{1}}
另外,通过试验几个案例,我必须告诉你,无论是第一次还是以后的运行,制作一个列表框都会花费相同的时间。
可能的原因是什么?
答案 0 :(得分:11)
这是完全正常的,它与您的代码几乎没有关系。冷启动时间主要取决于硬盘的速度。当必须找到启动.NET应用程序所需的许多DLL时,这可能会令人失望。这不是.NET应用程序独有的问题,Office应用程序和Adobe Reader等大型非托管应用程序也存在此问题。这通常会通过安装“优化器”而作弊,这是一个在登录时运行的程序,它通过预加载程序所需的DLL来使你的机器运行缓慢,因此它们在文件系统缓存中可用,在此过程中击败了SuperFetch。 p>
操作系统的文件系统缓存对于慢速磁盘来说是一个非常有效的解决方案,但它就像一英里长的货运列车才能加快速度。从头开始用有用的数据填充它需要一段时间,有效的磁盘传输速率,当它必须寻求最多几兆字节/秒。也是用户喜欢SSD的核心原因,它提供了更为根本的解决方案。一旦你经历过一次,你永远不会回去。
在许多优秀文章中都有很好的表现,找到它们的最佳方式是通过谷歌搜索“.NET冷启动时间”。