控件多了是否会影响程序的执行效率,增加.Exe文件的大小,消耗系统资源(100分)

  • 主题发起人 主题发起人 帅义庭
  • 开始时间 开始时间

帅义庭

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在想编写一个“电网主接线图”图形编辑程序,该程序需要用shape来
画圆、线、矩形等,还需要有许多label用来显示字符文字,image用来显
示图标,一个图形这些控件加起来起码也得有1万来个,本来这些图形是可以
在TCanvas中实现的,但在画布中实现不如用控件来得容易,而且画布上所
画的内容,还需要在onPaint中重画,不然就会消失,所以我决定使用大量
的控件,但不知如此大量的使用控件后是否会大大增加.Exe文件的大小,消
耗系统资源从而也会影响系统的执行效率。
另外,使用shape1,shape2,shape3 ...和使用shape:array 1...100
of TShape控件数组他们对*.exe的大小、系统资源、执行效率等方面的影响
有什么不同?听说VB中使用控件数组比使用单个的控件教节约系统资源。
 
肯定不行。一个form10,000个控件,我的天,高手,高手。
 
还是在Canvas上画吧!
 
控件数组执行效率高些,速度也快些
 
窗体上控件多了,可执行文件当然要大一点,但多个Shape只有第一个使可执行文件
的大小增加的明显(约3k),以后的影响很小;Label也是一样第一个大约是使.exe增加
4k.他们对程序的运行速度影响很小.窗体上的控件数是有限度的,10000个肯定不行.
 
只好在tcanvas上画了。
 
类实例创建的多少不会影响到Exe文件的大小,我想你不会在Form上摆上10000个
构件吧?!!!
控件的单元Use多了会增加Exe文件的大小,与动态创建多少无关.
只要你的内存够大,创建多少无所谓. :)
 
刚开始用Delphi时,我也是大量用控件,从网上找控件,
但时间一长问题就来了,现在我也用控件,但很少了,
而且必须是有源码的,经过考验的。
我不反对用控件,但注意副作用.
 
帅哥:
我觉得你的东西不适合用Delphi开发,应该用VC.
 
10000个空间大概windows资源会耗尽
 
理论上,10000个控件没有问题。Application.Components[]是用
32位整数作为下标,所以理论上可以包含65536个控件。我曾经开玩笑
写过动态创建2000个控件的程序,系统资源也没有耗尽的迹象。
我的建议是:如果要用的话,自己动态创建控件。最好参照VCL结构
自己写一些控件。我记得一个韩国人写过一套XVCL控件,直接从TObject
一路写下来,包括Label、Edit等控件,系统开销很小。如果你不怕麻烦,
可以参考一下。到深度离线找一下,好象有这个例子。
不过,我建议你自己绘制算了,关键设计一组对象管理机制来实现类似
矢量图的编辑效果。
 
控件的多少对文件的大小影响不大,但控件的种类的增多会导致文件的膨胀。注意:
我这里谈的是.EXE文件。
 
to Dick:
你计算错误,32位整数是 4G
也就是 4294967296
 
嘿嘿
32位整数是 -2G ~ 2G
 
TO rss:
你认为vc较elphi在开发图形方面有那些优势?为什么要该用vc呢?
 
当然了,这样的系统要求效率高,当然要离系统近的开发工具,
所以VC更合适.
你想,哪个成品的图形软件是Delphi开发的?99.9%是VC做的.
不是Delphi做不了,而是执行效率问题.

 
假如你觉得真有1000个左右控件,同时要调用的可能.那么你可以用程序动态创建的方法先试试一般的系统配置能否承受,这样免的你在辛苦创建后冒险.

假如程序并没有同时调用如此多控件的可能,可在程序运行时动态显示内容.象image用Image.Picture.LoadFromFile(filename)来临时产生所要显示的图片,这样可以节约控件数量.
 
我曾经写过一个程序,application create 70多个form,结果out of resource,
10000多个,肯定不行,memory不够, GDI也不够..
 
肯定不行,用1000个系统资源就不够了(是那个xx%的东西)
你必需要自己在FORM上画这些图形
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部