首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >冷启动与暖启动的比较

冷启动与暖启动的比较
EN

Stack Overflow用户
提问于 2008-09-24 13:11:34
回答 10查看 10.6K关注 0票数 13

我们的应用程序在重新启动(冷启动)后启动所需的时间要比已经打开一次(温启动)的时间要长得多。

大多数(如果不是全部)的区别似乎来自于加载DLL,当DLL‘在缓存内存页中时,加载速度要快得多。我们尝试使用ClearMem来模拟重新启动(因为它比实际的重新启动要耗时得多),并且得到了混合的结果,在一些机器上,它似乎非常一致地模拟了重新启动,而在一些机器上则没有。

总括来说,我的问题是:

  1. 您是否经历过冷启动和暖启动之间的启动时间差异?
  2. 你是如何理解这种差异的?
  3. 你知道有一种方法可以可靠地模拟重启吗?

编辑:

对评论的澄清:

  • 该应用程序主要是带有一些C++的本地.NET (加载的第一个.NET程序集为CLR付费)。
  • 我们希望改进加载时间,显然我们已经完成了分析工作,并改进了代码中的热点。

我忘了提到的是,我们通过重新建立所有二进制文件的基础而得到了一些改进,这样加载程序就不必在加载时执行它了。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2008-09-24 18:53:32

你是怎么分析你的代码的?并不是所有的分析方法都是一样的,有些方法发现热点比其他方法更好。你加载了很多文件吗?如果是这样的话,磁盘碎片和寻找时间可能会发挥作用。

也许,在代码中添加基本的计时信息,将日志文件写入日志文件,并检查冷/温启动时的文件,将有助于确定应用程序花在哪里的时间。

如果没有更多的信息,我将倾向于将文件系统/磁盘缓存作为这两种环境之间可能的区别。如果是这样的话,那么您要么需要减少预先加载文件的时间,要么需要找到更快的加载文件的方法。

示例:如果您正在加载大量二进制数据文件,请通过将它们合并到一个文件中来加快加载速度,然后在一次读取中将整个文件细化到内存中并解析它们的内容。较少的磁盘寻找和时间花在读取磁盘。再说一次,也许这不适用。

我不知道任何清除磁盘/文件系统缓存的工具,但是您可以编写一个快速应用程序,从磁盘上读取一堆不相关的文件,从而使文件系统/磁盘缓存装载不同的信息。

票数 3
EN

Stack Overflow用户

发布于 2008-09-24 13:12:47

至于模拟重新启动,您考虑过从虚拟PC机运行应用程序吗?使用虚拟化,您可以方便地一次又一次地复制一组条件。

我还会考虑某种类型的分析应用程序来识别导致时间延迟的代码位,然后判断该代码中有多少是真正必要的,或者它是否可以以另一种方式实现。

票数 6
EN

Stack Overflow用户

发布于 2008-09-24 13:15:06

在软件中很难真正模拟重新启动。当您重新启动时,计算机中的所有设备都会被断言其重置位,这将导致所有内存系统范围的丢失。

在现代机器中,到处都有内存和缓存: VM子系统为程序存储内存页,然后在内存中缓存文件的内容,然后在硬盘上设置扇区的磁盘缓冲区。您可能可以使操作系统缓存被重置,但是磁盘上的缓冲区在驱动器上?我不知道怎么做。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/127029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档