Ori*_*zer 4 delphi performance
我有一个程序,我在多台网络PC上运行.当我编译最新版本时,它在网络上的2台PC上运行得非常慢,但对其他人来说运行正常.
当我安装了额外的2GB RAM时,这曾经发生在旧的开发PC上.当我删除额外的2gb并重新编译时,它将适用于所有人.
现在,我正在使用一台全新的机器并遇到同样的问题.我重新启动后尝试重建项目,但仍然有同样的问题.
对于所有其他PC,程序加载大约3-5秒.在这两台PC上,加载时需要45秒到1.5分钟......
其中一台PC是较旧的戴尔Dimension 8200,但另一台则是较新的OptiPlex,它与网络上的其他几台PC完全相同,所以这才真正令人困惑.
现在,我不得不恢复旧版本,以便它能够为每个人正确运行.
有没有人想知道要尝试什么?
提前致谢!!!
编辑:
好吧,昨天是一个疲惫的一天,尝试各种方法来解决这个问题.这是我尝试过的问题以及问题的开始:
使用新程序
回到所有更新组件的旧版本,但仍然有同样的问题
使用旧程序
我决定回到绘图板并从旧版本的应用程序开始,逐步添加新功能.
好的,现在我们知道我更新的组件集没有任何内容......
因此,只在应用程序中添加一个表单就是导致问题的原因!我删除了打开表单的所有代码,注释掉了uses子句并从项目源中删除了uses条目,一切都恢复正常了!
有人对此有任何想法吗?
谢谢!
编辑2:
对于@Warren P - 这是我的.DPR来源:
program Scheduler;
uses
ExceptionLog,
Forms,
SchedulerMainUnit in 'SchedulerMainUnit.pas' {FrmMain},
SchedulerDBInfoUnit in 'SchedulerDBInfoUnit.pas' {FrmDBInfo},
SchedulerHistoryUnit in 'SchedulerHistoryUnit.pas' {FrmHistory},
SchedulerOptionsUnit in 'SchedulerOptionsUnit.pas' {FrmOptions},
SchedulerExtVersionUnit in 'SchedulerExtVersionUnit.pas' {FrmExtVersion},
SchedulerSplashUnit in 'SchedulerSplashUnit.pas' {FrmSplash},
SchedulerInfoUnit in 'SchedulerInfoUnit.pas' {FrmInfo},
SchedulerShippedUnit in 'SchedulerShippedUnit.pas' {FrmShipped}; {<-- This is the new form with the issue}
{$R *.res}
begin
Application.Initialize;
Application.Title := 'SmartWool WIP Scheduling Assistant';
Application.CreateForm(TFrmMain, FrmMain);
Application.CreateForm(TFrmDBInfo, FrmDBInfo);
Application.CreateForm(TFrmHistory, FrmHistory);
Application.CreateForm(TFrmOptions, FrmOptions);
Application.CreateForm(TFrmExtVersion, FrmExtVersion);
Application.Run;
end.
Run Code Online (Sandbox Code Playgroud)
这里是创建启动的主窗体的初始化部分:
initialization
FrmSplash:=TFrmSplash.Create(Application);
FrmSplash.Show;
FrmSplash.Refresh;
Run Code Online (Sandbox Code Playgroud)
编辑3:
任何人??? 请?
Vil*_*nde 12
当尝试访问该计算机上不可用的资源(例如网络驱动器或Internet主机)时,程序可能正在等待超时.
在启动程序时尝试运行Process Monitor并查找文件打开调用.过滤输出,使其仅显示您的过程.
http://technet.microsoft.com/en-us/sysinternals/bb896645
最初的性能问题最初看起来非常令人生畏.
我参加了许多团队,人们试图猜测性能问题的原因.这有时可行,但远不如实际测量代码有效.
当在开发机器上可重现时,我会推荐一个分析器.
之前有一个问题询问了 Delphi Profiling工具,它有几种可以使用的工具.
当您无法在开发机器上重现问题时,它会变得有点困难,但并非不可能.通常我发现问题与不同的应用程序依赖关系有关,并且表现不佳.了解对应用程序的外部影响可以帮助查明问题.
在我的一些应用程序中特别常见的外部问题.
要监控与网络相关的项目(即数据库,Web服务等...),我通常使用Wireshark,它允许我查看资源是否在预期的时间内响应.我最常见的问题是DNS表现不佳,可以使用Wireshark找到.
您可以使用AutoRuns程序确定计算机启动时启动的所有内容,它可用于确定计算机之间的差异.
但最重要的是,我的日志记录可以在我的应用程序中打开,这使我可以将问题隔离到特定的代码区域.缩小到特定代码部分可以减少猜测,并使您可以专注于一些可能的问题.
我为此创建了一个日志函数,我在特定位置调用该函数(在您的情况下,尤其是在启动期间)。它为每个日志文本添加时间戳,并将它们存储在定期保存的 TMemo 中。不仅在调试时非常有帮助,而且还可以阐明您的问题。