这个不是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 编辑 ]
|