关于程序执行效率的优化(大家都来看看吧,给我点启发和帮助)
一个扫描器的程序,c/s模型,win 2000+vc 6.0
最近在对客户端的测试当中,强烈感觉到控制台这边的响应速度太慢了
在对树视和相关联的列表视进行操作时,也就是当用户点击某个策略的时候,其下的所有主机的相关信息都要在listctrl(一共四个tab,每个页面一个listctrl)中显示,扫描的主机数超过50时,就会有相当一段时间的停滞,这些操作主要包括对控件的操作和数据库操作,具体分析如下:
控件的操作:
主要是ctreectrl的操作,就是遍历所有的叶子节点,然后对每个节点有相关的数据库操作,实际资源占用较大,win的资源管理器是如何处理的呀?
数据库操作:
在对树节点操作的同时,还要进行数据库操作,我们用的是ADO+ACCESS,程序启
动时建立数据库连接,退出时关闭连接,整个程序运行的时候并没有频繁的开关数据库连接对象,取而代之的是记录集对象的频繁建立和释放,据统计,
对每一个节点,平均每个节点显示一次它所包含的四个tab中的信息,需要进行9次记录集对象的创建和释放,9次sql查询,每次查询返回的
记录条数的范围从1到无穷大直到遍历整张表的所有记录
这样的效率肯定是非常低的,作为控制台程序负担太大,一定要想办法改善!
可是我现在没有具体的想法呀?大家有什么好的建议么?
请大家不吝赐教!!!!狠急地说!!!
我的信箱是wwsatan@263.net
必要的话,我可以给部分源代码,请留email
问题点数:61、回复次数:4Top
1 楼wwsatan(风度翩翩的猪肉王子)回复于 2001-12-13 10:59:09 得分 0
关注一下吧Top
2 楼whool(喔)回复于 2001-12-13 10:59:37 得分 51
这个问题的瓶颈在于你频繁的对记录集的建立和释放,我原来作了一个ODBC版本的,和你差不多也是频繁建立和释放,我的CPU用掉将近100%,或来不这样做,只在程序退出时才释放,用的时候判断是否建立,没有就建立,有就使用原来的连接,你为什么一定要频繁建立和释放呢?这样底层会做很多事情,所以会很慢,不妨试试。Top
3 楼wwsatan(风度翩翩的猪肉王子)回复于 2001-12-13 11:12:02 得分 0
感谢whool!!!
sql查询占用资源大么?
能不能用缓冲来处理?Top
4 楼xiaoxiaohan(萧晓寒)回复于 2001-12-13 17:19:56 得分 10
改变程序优先级不可以吗?Top




