- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我尝试搜索,但到目前为止还没有成功。有谁知道应该如何进行冷启动优化的好资源?
有问题的应用程序是 C++/MFC 应用程序,使用 VS2010 编译,完整版,内置分析器可用。我试图减少所有额外的重量以获得热启动可接受的加载时间,但冷启动是 Not Acceptable 。有时接近 30 秒,而且没有什么是慢代码明智的。 CPU 负载在热启动期间达到 80%,在冷启动期间保持在 20% 以下。
我今天尝试使用延迟加载链接器设置,但我不太明白它们如何影响性能。此外,我尝试了可执行打包程序,但在 VM 上的测试似乎并没有更快。还有什么我可以尝试的吗?
最佳答案
冷启动时间长是纯粹的硬盘问题。查找您的程序需要的 DLL。除了运行碎片整理工具之外,您无法优化硬盘。将您的程序分段以使 DLL 加载与 UI 时间重叠是非常困难的。使用 COM 服务器或链接器的/DELAYLOAD 选项是显而易见的方法,但要在屏幕上显示功能性 UI 而不触及任何东西并不容易。将类分离到由工具栏或菜单选项触发的 DLL 中当然是可能的,但 MFC 并不能使空闲时间 UI 更新变得那么容易(抱歉,忘记了确切的短语)。
您并不孤单,Microsoft Office 和 Acrobat Reader 等程序也有此问题。他们用一个非常棘手的 hack 解决了这个问题,他们在运行注册表项或启动文件夹快捷方式中安装了一个“优化器”。除了接触所有 DLL 以便将它们加载到文件系统缓存中之外,它什么都不做。在用户检查她的电子邮件后给 EXE 一个热启动。我讨厌他们,并在他们再次放回去后继续删除它们。但它确实提高了用户的意见,他们会认为是电子邮件阅读器速度慢。或者当然是该死的 Windows-shoulda-gotten-a-Mac。
也就是说,30 秒是一段很长的时间。请确保这不仅仅是您的开发机器上的问题,而是通过一遍又一遍地构建二进制文件并将它们分散在整个磁盘上引起的。运行碎片整理程序。接下来,使用 SysInternals 的 ProcMon 实用程序检查它正在做什么。
关于c++ - 冷启动优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3807791/
我想做一些类似 Jar cvf file.jar *.class 的事情,但是我在我的 jre6 java 安装中没有看到 jar 编译器文件。 jar 是独立的东西吗?我想安装? 最佳答案 您需要下
阅读时 an intro to rxjs我读了以下内容并有点担心 the second subscription will restart the sequence from the first va
如何将 MainEngine Observable 转换为 Cold?来自这个例子: public IObservable MainEngine { get
我最近一直在进行冷迁移...这意味着我无法在进行迁移时从应用程序级别读取/写入数据库(维护页面)。 这样就不会因为更改结构而发生错误,而且如果负载很大,我也不希望 mysql 在迁移过程中崩溃。 我的
我需要在 Linux 中以物理方式关闭 PCI 设备的电源。我已经找到了我需要的函数,但似乎编写了一个内核模式应用程序来使用该库,因为我在内核头文件中找到了它。 我在 drivers/pci/pci.
我是一名优秀的程序员,十分优秀!