CnPack Forum


 
Subject: Delphi2007中使用代码助手
netilu
新警察
Rank: 1



UID 19462
Digest Posts 1
Credits 34
Posts 8
点点分 34
Reading Access 10
Registered 2007-7-6
Status Offline
Post at 2007-11-3 16:37  Profile | Blog | P.M. 
Delphi2007中使用代码助手

为什么在Delphi2007中使用代码助手,反映速度很慢,是我机器的问题,还是大家都这样的,明显比Delphi7中慢了好几秒,郁闷.
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6756
Posts 3554
点点分 6756
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-11-3 16:47  Profile | Blog | P.M. 
每次弹出都慢?还是只第一次弹出时慢?
Top
netilu
新警察
Rank: 1



UID 19462
Digest Posts 1
Credits 34
Posts 8
点点分 34
Reading Access 10
Registered 2007-7-6
Status Offline
Post at 2007-11-3 16:51  Profile | Blog | P.M. 
第一次慢一点,后面的好一点.
Top
netilu
新警察
Rank: 1



UID 19462
Digest Posts 1
Credits 34
Posts 8
点点分 34
Reading Access 10
Registered 2007-7-6
Status Offline
Post at 2007-11-3 17:00  Profile | Blog | P.M. 
但基本上,有个好几秒,关了IDE自带的完成功能,又好一点
Top
netilu
新警察
Rank: 1



UID 19462
Digest Posts 1
Credits 34
Posts 8
点点分 34
Reading Access 10
Registered 2007-7-6
Status Offline
Post at 2007-11-3 17:20  Profile | Blog | P.M. 
Delphi7里面很快的,没有任何迟顿感
Top
niaoge
灌水司司长
Rank: 6Rank: 6



UID 9910
Digest Posts 0
Credits 438
Posts 143
点点分 438
Reading Access 10
Registered 2007-4-8
Status Offline
Post at 2007-11-4 03:41  Profile | Blog | P.M. 
这个不是cnwizard助手的问题,下面我给出解释及解决方法
解释
首先,现在的助手经过无数次的改良之后,组织词汇时间不会超过1秒钟,所以认为助手慢是一种误解
其次,助手首次使用慢(包括compile,builder之后的首次也同样慢)是给Delphi背黑锅,这个问题是Delphi2007本身的问题,助手在组织词汇前,发一个命令(invokecomplete)给IDE,用于获得一个词汇的List,慢就慢在这个命令首次被IDE执行时慢,因为IDE要解析所有用到的dcu文件(pas文件也被先转换成dcu),首次之外会快点,这是因为IDE有一个dcu文件的缓存,
不同的IDE解析dcu时间不一样,Delphi2006,Delphi7首次执行这个命令确实比Delphi2007快,但是首次之外反而没有Delphi2007快,因为delphi2007读缓存更快.
你可以关闭助手,用IDE本身的codecomplete(IDE本身组织词汇也是用这个命令)测试一下,你会发现助手和IDE自身弹出提示框所花的时间是一样的.

补充一点,按理说D2007使用fastcode,fastmm等一系列代码,解析dcu的速度不会慢才对,因此本人猜想这可能与non-breaking技术有关,non-breaking目的是使D2006编译的dcu和dcp可以直接在D2007下使用,这个出发点是为了市场推广,让用户for 2006第三方组件也可以在2007上安装,因此为了保证D2007对D2006的以上兼容,non-breaking以牺牲部分性能为代价,也或者当D2007解析自身dcu时,也要判断相关的dcu到底时D2006还是D2007编译出来的,当然,这些仅与IDE速度相关,不影响最终编译出exe的执行速度

解决方法:
1.在编辑代码时,临时将 Project->Options->Packages->Build with runtime packages 打勾勾,再将delphi默认的包全部加进来(如果你以前没有修改的话,那就是默认的),这是因为包(bpl文件)对应的dcp文件相当于这个包内的dcu文件已经被解析好的缓存,打开工程时,IDE就会把相应的dcp文件直接加载到缓存中,省去了解析dcu文件时间

2.发布l软件前再将此设置改成你原来的设置,重新compile或buid就行了,

[ 本帖最后由 niaoge 于 2007-11-5 18:33 编辑 ]
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6756
Posts 3554
点点分 6756
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2007-11-4 16:17  Profile | Blog | P.M. 
此帖加精!
Top
 




All times are GMT++8, the time now is 2024-4-19 03:11

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.008354 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP