怎样解决软件启动CPU占用率瞬间变高,导致软件启动变慢的问题;C++ Builder(BCB) 开发的大概有30个FORM

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎样解决软件启动CPU占用率瞬间变高,导致软件启动变慢的问题;C++ Builder(BCB) 开发的大概有30个FORM相关的知识,希望对你有一定的参考价值。

C++ Builder(BCB) 开发的软件大概有30个FORM,没有动态链接(DLL),没有线程.跑起来后一切正常.就是启动慢要8s......
求解决方法...

有用的回答可以再加一百分
我现在将一半的FORM进行动态创建了,可速度只是比以前快了1秒,看来动态也起不了什么作用了,求解决法子.........

CPU占用率高的九种可能
1、防杀毒软件造成故障
由于新版的KV、金山、瑞星都加入了对网页、插件、邮件的随机监控,无疑增大了系统负担。处理方式:基本上没有合理的处理方式,尽量使用最少的监控服务吧,者,升级你的硬件配备。
2、驱动没有经过认证,造成CPU资源占用100%
大量的测试版的驱动在网上泛滥,造成了难以发现的故障原因。 处理方式:尤其是显卡驱动特别要注意,建议使用微软认证的或由官方发布的驱动,并且严格核对型号、版本。
3、病毒、木马造成
大量的蠕虫病毒在系统内部迅速复制,造成CPU占用资源率据高不下。解决办法:用可靠的杀毒软件彻底清理系统内存和本地硬盘,并且打开系统设置软件,察看有无异常启动的程序。经常性更新升级杀毒软件和防火墙,加强防毒意识,掌握正确的防杀毒知识。
4、控制面板—管理工具—服务—RISING REALTIME MONITOR SERVICE点鼠标右键,改为手动。
5、开始->;运行->;msconfig->;启动,关闭不必要的启动项,重启。
6、查看“svchost”进程。
svchost.exe是Windows XP系统的一个核心进程。svchost.exe不单单只出现在Windows XP中,在使用NT内核的Windows系统中都会有svchost.exe的存在。一般在Windows 2000中svchost.exe进程的数目为2个,而在Windows XP中svchost.exe进程的数目就上升到了4个及4个以上。
7、查看网络连接。主要是网卡。
8、查看网络连接
当安装了Windows XP的计算机做服务器的时候,收到端口 445 上的连接请求时,它将分配内存和少量地调配 CPU资源来为这些连接提供服务。当负荷过重的时候,CPU占用率可能过高,这是因为在工作项的数目和响应能力之间存在固有的权衡关系。你要确定合适的 MaxWorkItems 设置以提高系统响应能力。如果设置的值不正确,服务器的响应能力可能会受到影响,或者某个用户独占太多系统资源。
要解决此问题,我们可以通过修改注册表来解决:在注册表编辑器中依次展开[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceslanmanserver ]分支,在右侧窗口中新建一个名为“maxworkitems”的DWORD值。然后双击该值,在打开的窗口中键入下列数值并保存退出:
9、看看是不是Windows XP使用鼠标右键引起CPU占用100%
在资源管理器里面,当你右键点击一个目录或一个文件,你将有可能出现下面所列问题:
任何文件的拷贝操作在那个时间将有可能停止相应
网络连接速度将显著性的降低
所有的流输入/输出操作例如使用Windows Media Player听音乐将有可能是音乐失真成因:
当你在资源管理器里面右键点击一个文件或目录的时候,当快捷菜单显示的时候,CPU占用率将增加到100%,当你关闭快捷菜单的时候才返回正常水平。
解决方法:
文字较多,请看链接http://help.360.cn/index.php?c=help&a=topic&bid=5030806&tid=19726210

参考资料:http://help.360.cn/index.php?c=help&a=topic&bid=5030806&tid=19726210

参考技术A 呵呵,这个问题很容易解决,你把除了mainForm以外的所有的Form都设置成动态生成就不会那么占用内存了!追问

内存倒不高,就是CPU瞬间变高

追答

你的Form是不是都是静态生成的?

追问

没有一个是动态的,悲剧啊!

追答

呵呵,那真是很悲剧!
最好做到动态生成、关闭后动态删除!这样程序的运行就不会占用那么多的电脑资源!

参考技术B 我觉得应该是你的 界面别 文件操作或者数据库操作阻塞住了。
这些 磁盘的操作可以尽量放到后台线程里面慢慢加载,先显示界面,不要block住主线程
参考技术C 启动慢可以减少启动时同步加载的资源,如果必须加载就采用类似PhotoShop那样的启动画面,来减少由于启动时间过长造成的用户体验差的情况
至于CPU占用瞬间变高?会有多高?在什么样CPU的机器上进行的测试?一般来说多核CPU如果单线程启动的程序都不会占用很多的吧追问

工作电脑 E2200 2.2GHz ---->启动8-9秒 占用率40-47%

I3 CPU 启动5-6秒 占用30%左右

追答

说实话这个数据不是很高,除非文档中有特殊要求
因为启动时间有这么长,说明启动时加载的内容较多,可以从构造函数OnLoad时减少部分,或者推迟到OnShow之后进行,不过这个时候加载会让界面卡上一段时间
如果都是必须的话,就是建议用启动画面的方法,这样的用户体验较好,类似office那种

另外,能把一些启动的执行流,或者代码说出来嘛,至少对你的程序启动有个认识

参考技术D 没有必要不要一次创建这么多form,,启动时只创建几个必须的就行了,应用时再用new来创建。设计问题,这回代价大了。追问

你的意思是因为一次启动的FORM太多了才导致cpu过高? 我不知道是不是所有的FORM都跟随软件的启动一起动起来了/

追答

从经验上说当然很有可能,当然也可能是连接数据库时产生的。一般开发过几个窗口程序之后,就不会采用这样的设计了。

以上是关于怎样解决软件启动CPU占用率瞬间变高,导致软件启动变慢的问题;C++ Builder(BCB) 开发的大概有30个FORM的主要内容,如果未能解决你的问题,请参考以下文章

cpu占用过高怎么办

电脑cpu占用过高怎么办

CPU占用率高都有哪些原因

电脑cpu过高怎么办

Linux 下杀毒软件 CPU 占用率为何持续升高

c语言的cpu占用率