1.DELPHI程序快在哪里???(100分)

K

kanny

Unregistered / Unconfirmed
GUEST, unregistred user!
据资料介绍,DELPHI的编译器是最快的,我用DELPHI开发了一个应用程序,在
进入程序时却需要相当长的时间,不知何故?
 
看来是你程序初始化中的问题。
是不是用到了很多数据库控件, 并且active属性都为true?
这样初始化时需要打开很多数据库,一般慢就慢在这上面
 
编译器最快,并不等于程序运行快!
只是Pascal的编译连接比 C++快(因为它严格的语法要求)
 
不过delphi生成的程序运行也算快的,inprise有那么多编译器开发经验,它产生的代码
优化性能是最好的了。
 
Delphi的编译器是最快的这是不可否认的, 但是Delphi编译的程序运行并不块(当然
与VB比起来还是块的多, 比Borland的C++ Builder快一点, 比Borland C++和MS VC++的Exe慢了不少).

Delphi编译快的诀窍在于那些已经编译过了的dcu文件不需要再次编译, 只是把他们
link起来就是一个Exe. 至于优化吗, 不敢说没优化, 至少dcu代码是优化过了的.

Delphi追求的是快速开发, 并不是最快的运行程序. 熟话说"有得必有失".

尽管运行速度慢一点, 但是Delphi作为开发工具还是比任何其他的开发工具都好. 希
望Inprise在代码优化上在花点功夫, 那样的话就更完美了!
 
电子与电脑里的评测文章(付测试程序原码)的结果是Delphi程序跑的最快。

可是我也遇到过高人,把个极小的程序写的和VB一个效率,问他原因,告诉我是form开太多,可是我的程序form比他多一倍,照样比他快多了,而我也没有做任何的优化,实在是佩服这位仁兄。

题外话,哈哈哈
 
delphi编译器快,主要是因为它不支持多重继承和使用Dcu文件!
你的程序是由于加载慢,看来你使用了较多的窗体或元件!
使用启动窗体来消除寂寞吧,象Word!
 
我看是你程序设计的算法问题.
可能在你的窗口建立(form.create)时你写了大量的代码,而这些代码由于要
完成大量的工作,或者是工信息量虽不多但你的算法极差极,就会造成窗口装
入前要花费大量的时间来完成这些工作.
因为要显示一个窗口是需要这个过程全部完成才行的.
检查一个两个过程: Form.Show, Form.Create.
尽量优化你的代码,才是问题的症结.
给分吧兄弟. :)
 
第一次编译慢,第二次就快多了。
进入程序是指启动你的Exe文件还是Delphi?
如果是启动你的Exe文件慢的话,用<a href=ftp://210.79.245.4/incoming/chenke/aspack.exe>aspack.exe</a>压缩可使程序字节压缩到%50左右,
从而快速载入程序。
 
我想你的Form一定很多, 并且程序启动后便一个个, 迫不及待地
create起来了, 要学会动态加载form.
 
很多控件都可以自动创建的呀。(而且编译快并不代表运行快。不过,这个编译器之间差别到不是主要的。)如果你有很多初始化工作都自动完成,那一定无法控制应用程序的启动速度。
比如FORM创建和数据库的打开,OLE的连接等都是比较耗时的。解决的办法前边已经有叙述。FORM多的情况下可以手动创建的。数据库可以用到时再打开。OLE也是这样。


 
你把一些窗体在用的时候在创建它,
数据库,在用的时候在ACTIVE.DELPHI
下有个菜单鼠标放上去的时候要等上
一会儿,就是这个道理.

这就要求你的程序模块划分的好了,事实
上C和PASCAL的速度差不了多少的.

DELPHI编译的快是因为它每次编译以后,都
在内存中建立了当前PROJECT的相关数据,
你有任何改动,它都会纪录下来,然后下一次
编译的时候比较一下.
如果你新打开个项目,第一次编译的时候甚至
比VB都慢,第二次吗,你改动的越少越快.

你写过ISAPI吗,它的速度也比ASP快是快点,但不多.
同样的道理,数据库太大了,时间全部浪费在
打开数据库中了.








 
Delphi的编译速度快,你按F9最多五秒,程序开始启动,而不是目标执行速度快
何况那么多VCL怎么会快?尽量用动态创建FORM可能会加快速度
 
小唐的看法是对的,但是却是一样的。
这种动态建立的方法,只不过将本来在开始运行的一些程序段放在后来使用时
再建立而已,但必须处理得好否则必死。
我还是建议少用控件,多用API,优化函数、过程代码来达到高效。
 
动态创建窗体的方法,如果你的程序每次都用到全部窗体,其实不一定有必要;
倒是可以继承已有窗体创建新窗体,可以节省不少资源和时间。
 
各位的发言都很有道理, Delphi编译程序是 编译快 -- 装载慢 -- 运行快.

这里就有一个"得失"的取舍问题:
1. 编译快符合时代精神, 必须肯定
2. 装载慢主要是程序太大, 加载需要时间
Form多, 程序自然较大, 动态创建Form并不能减少程序的大小, 因为每一个Form
对应的dcu必须加载到内存. 应该使用通用Form, 最好是多功能的Form. 比如说
多个Table的显示, 用一个Form, 一个DbGrid, 根据需要改变DataSource.
3. 运行快, 程序都加载到内存了, 一切都准备齐全了, 当然运行快了.

可以回到已答问题<a href="DispQ.asp?LID=91277">"如何是Delphi编译的EXE变廋"</a>去看一看.
那里有一个AsPack(也叫做Fat-to-Thin)的程序可以使Delphi编译的32位的EXE减肥
50%以上, 是Delphi爱好者必备.
 
有一点大家必须注意的是FAT-TO-THIN这种程序
到底可靠不可靠,如果很可靠的话BORLAND自己为
什么不采用这种方法.

如果自己写程序非商业化,这种工具的确不错;商业化
劝大家还是慎重使用,现在的机器能经得起98这个大
家伙的考验,我们写的程序应该应付得了.

顺便问一句:我的机器是赛扬300A超频到450用的,平时
很稳定,为什么98却不能正常关机(正在关机...,就在也不动了).

 
多人接受答案了。
 
顶部