我的应用程序加载缓慢或延迟

扎尔

问题:

我的问题是,如果我用替换下面的函数foo1(在代码中具有的代码),将会对应用程序的内存占用量或性能产生什么影响foo2该功能在应用中经常被调用。

#define SIZE 5000

void foo1()
{
   double data[SIZE];
   // ....
}

void foo2()
{
   std::unique_ptr< double[] > data( new double[SIZE] );
   // ....
}

语境:

实现新功能/模块后,我的MFC应用程序在运行Windows 7的嵌入式设备上的加载速度非常慢。相同的应用程序可以在PC上快速加载。至少有一个差异,我怀疑是原因是嵌入式单元上的RAM确实很低,仅为768 MB。

我对其进行了调试,以找出此延迟在哪里发生,并在加载过程中在应用程序内记录了时间戳。我发现的很有趣。当我双击该exe时,大约需要一分钟的时间来记录第一个时间戳,此后它会快速运行,因此所有延迟都就在那里。

我的理论是Windows会花所有的时间来为exe设置环境,一旦完成,它就会快速运行。我怀疑这是因为在应用程序中的堆栈上声明了很多大结构,以至于我不得不将其中一些移至堆中以消除堆栈溢出错误,即使在具有新功能的PC上也是如此。

您认为在低RAM机器上缓慢或准确延迟加载可执行文件的原因是什么?如果我将所有大型结构从堆栈移动到堆,您是否认为它会解决?

汉斯·帕桑特

在现代计算中,没有太多事情需要花费一分钟的时间。也不是在具有嵌入式Windows版本的计算机上。不是处理器,不是RAM,不是磁盘。

一个之外,联网仍基于1980年代最后一次有效的假设。TCP / IP已成为唯一的常用协议。但是有一个缺陷,没有合理的方法来发现连接尝试可能要花费多长时间因此,连接超时是基于绝对最坏情况下的条件,试图连接到世界中途的机器,并与需要旋转感光鼓以加载程序的调制解调器连接。

Windows上最小超时设置为45秒。而且,总的来说,在嵌入式计算机中这种情况肯定不太可能发生。您可能已将其连接到网络上以对其进行初始化,但该网络已不再连接,或者从其复制的计算机可能不再通电。

首先寻找断开连接的磁盘驱动器(很常见),将其追逐下来接下来,使用SysInternals的实用程序(例如TcpView)来查找网络活动,例如尝试连接到CRL服务器。使用Process Explorer找出程序卡在哪里。马克·鲁西诺维奇(Mark Russinovich)的博客非常棒,可以展示他使用这些工具的故障排除策略。祝你好运。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Ionic:我的Android应用程序的首次加载异常缓慢

symfony2 + doctrine2-延迟加载如何影响我们的应用程序?

我的Android应用程序运行非常缓慢

Hibernate延迟加载应用程序设计

延迟加载模块会挂起Angular Web应用程序

在多线程应用程序中无锁的延迟加载

访问应用程序委托变量延迟迅速加载视图

Angular CLI的延迟加载应用程序主题样式

如何在Angular应用程序中延迟加载库

角度应用程序如何从其他应用程序延迟加载角度模块?

如何查找缓慢加载的SAPUI5应用程序的加载瓶颈

部署后预加载 Web 应用程序页面以防止加载缓慢

推迟执行我的应用程序的最佳延迟是什么?

从SCSS提取CSS并延迟React应用程序中的延迟加载

数据库大小逐渐增加后PHP应用程序加载缓慢

用Angular2编写的单页应用程序加载缓慢吗?

应用程序在Ubuntu 18.10上加载缓慢-似乎与fontconfig有关

Phonegap + jQuery Mobile Windows Phone 8应用程序缓慢加载本地HTML文件

自定义 TTF 字体在 React 应用程序中加载缓慢

延迟加载模块的路由会完全重新加载应用程序

Xamarin应用程序启动缓慢

我的servlet应用程序无法加载我DemoServlet类

我的GAE应用程序运行缓慢,日志中有很多“来自未知来源的HTTP(503)”

应用程序正在生成我的延迟加载模块的块,其前缀为default〜..,甚至在被调用之前

为什么我会收到“ ReducerManager没有提供者!” 使用ngrx延迟加载的Angular 6应用程序的单元测试错误?

我的基本React / Redux应用程序未加载状态

如何防止 Metro 随机重新加载我的应用程序?

Android Webview应用程序将无法加载我的表单

Tomcat无法在Ubuntu中加载我的Web应用程序