今天下载试用了下XE2,感觉没有什么新意。除了编译出来的EXE大了点,其它好处还没有看到。试了一下FireMonkeyh的控件,那个速度一塌糊涂,同样的ListBox,比VCL差距在50倍以上。不知道在其它平台上的速度如何。详细数据我放在我163的BLOG上了。
http://robot88.blog.163.com/blog/#m=0

解决方案 »

  1.   

    Add 时,是不是也有个BeginUpdate() / EndUpdate() 呢?
      

  2.   

    据说FM是使用OpenGL绘制的,可能初始化、释放资源的操作比较耗时,象你的例子,如果这样做可能好很多:
    ListBox2.Item.BeginUpdate;
    for i := 1 to 1000 do
      begin
        ListBox2.Items.Add('君不见,黄河之水天上来,奔流到海不复回!');
        ListBox2.Items.Add('君不见,高堂明镜悲白发,朝如青丝暮成雪!');
      end;
    ListBox2.Item.EndUpdate;
      

  3.   

    xe2能编译64位的isapi吗?
    d7和xe编译32位的isapi,在64位的iis7.5下总是无法运行。
      

  4.   

    没这么差把。firemonkey我觉得还是很不错的,做出来的默认效果像J2SE,里面一些新的组件都蛮棒的
      

  5.   

    编译大的话,Firemonkey的DEBUG是8M,空FORM
                  release是3M
      

  6.   


    我已经把XE2 Delete了,例子很简单,你们自己做一下就知道了。另外还发现了几个小问题。一是做FIREMONKEY的项目时,你拖动窗体,背景会乱掉,好象是没有通知背景控制重绘,这个问题只在IDE调试时出现。二是简单试了一下MEMO组件,FIREMONKEY的MEMO组件不能正常对中文进行换行,好象只是简单的按空格换行。VCL的MEMO组件则没这个问题。我已经没信心继续吃螃蟹了,你们继续吧。
      

  7.   

    要有升级包了,Delphi各个版本基本上那个版本没有升级包,技术上要创新,不创新delphi真是穷途末路了。
      

  8.   

    比速度没有意义,用Java在Anroid上搞个程序你就知道速度根本不是用户非常在意的。
      

  9.   


    加上 BeginUpdate() / EndUpdate()的话,时间也是1秒,而且还是在虚拟中装的XE2的.
      

  10.   

    这个故事教训我们,添加列表一定要记得BEGINUPDATE,尤其涉及到从绘的我连添加字符串到StringList都会先beginupdate的
      

  11.   


    Add 到非可视的TStringList 时,好象没有必要吧。?
      

  12.   

    ListBox2.Item 会影响 ListBox2 去显示
      

  13.   


    BeginUpdate/EndUpdate可以理解为批量更新,最后一起显示,如果是需要随时刷新怎么办?一般我习惯用个LISTBOX做为LOG窗口,显示一下程序运行状态。不能即时更新,就没什么用了。而且从TMEMO的问题看来,会不会其它的文字控件对于中文的支持也有问题?这些都是最最常用的控件。还有如果真是用OpenGL来绘图的话,我觉得问题也多多,除了专业的显卡,家用显卡对于OpenGL支持都不是太好。还不如封装好DX9,可以做为游戏客户端开发工具。
      

  14.   


    这不叫试用要什么,难道要花个几万RMB买个,用上几个月才能要试用?我觉的这是一个技术论坛,你可以指正我提出的问题,如象前面兄弟说的BeginUpdate的问题。喷人要带点技术含量的喷。毫无内容的乱喷,还是省省吧。其实严格说来,编译后的文件体积变大也是一个问题,这个肯定会导致启动速度变慢。如果我没有记错的话,同样是空FORM的窗体,DELPHI7是300K左右,而XE2是1.5M左右。如果在编制DLL的项目时会相当成问题。做为一个从DELPHI5发布就开始用DELPHI的老用户,至今还在用DELPHI写点东西。不关心他也就不会第一时间试用了。贴子放在这里,随着时间过去,大家会看到XE2是不是一个划时代的产品。一直找不到好的试用贴子。我希望多一些测试,比如负载能力,用大数量填充一些控件。比如稳定性。长时间的动态创建,关闭一些控件,看看是不是有内存泄漏,真金是不怕火来练的。不要说没有开发资金什么的,你看看SQLite的开发,看看人家的技术文档,编码水准。现在安卓,苹果均把SQLite做为内部支持的数据库。对比DELPHI而言,就象是一个拙壮的小草和腐朽的大树。前景不言而喻。
      

  15.   


    首先你还是停留在很浅的角度去看XE2,就像很多Delphi程序员只会拖VCL,从来不看VCL代码,天天的工作就是找控件,换控件。人家Delphi的很多控件代码都在那里了,觉得慢你不会加个调试信息?简单的GetTickCount就能算出来是哪个步骤上耗时,哪个函数耗时,为什么耗时。而且你根本不知道FireMonkey的背景,这个软件就是VGSence,BusinessSkin的作者,后来被收编到易宝龙,我估计你也根本没有钱买过这些VCL组件。我的很多用户数量上百万的软件都是用VGSence,BusinessSkin做的,以前都是买的正版的控件,编译出来的程序一般都在3-10MB,因为人家的皮肤控件包含了很多图像元素,现在的宽带用户根本不会在乎你的软件是400K还是10MB。而且如果你结合ASPACK的话,一般Delphi的程序可以压缩60%,安装包很容易控制在10MB以内。Delphi的基础框架是包含了所有运行库在程序内的,bpl的本质就是dll,所以你完全可以利用bpl机制来控制程序群的大小。Firemonkey带来的视觉冲击效果是非常强的,当然前提是你会用这些组件,并且配以美工的素材,可以做出以前任何VCL都很难做到的效果。这个是非常具有卖点的,我用XE2已经在MAC上做了好几个产品了,目前老用户反应的结果都是非常好。所以我最近准备入手一个正版的XE2来为国外客户提供终极产品。Delphi本身就是一个可扩充性非常好的框架例子,所有的模块都是公开的,代码都摆在那里,如果你觉得那里不好,你可以修改他们来达到你的目的,对于我们Delpher,需要的只是稳定的编译器,那就足够了。
      

  16.   


    首先,我有没有钱买这些VCL组件和我试用XE2,发个贴子,有关系嘛?以前用过VCLSkin,后来用过BusinessSkin,各有所长。最方便是VCLSkin不用改代码。如果是BusinessSkin的话,移植就是大工程了,不过BusinessSkin的好处是换肤比较完整,弹出对话框什么都齐全了,还有自已增加的一些控件。就算BusinessSkin的作者是牛人,就代表Firemonkey一定很牛嘛?从心底上来说,我们也希望Firemonkey很牛,但是做为一个搞技术的,实事求是是重要的。明白了你要用的是Turbo Pascal, 不是Delphi.
      

  17.   


    果然不出所料,还是停留在VCLskin控件的层面,所以你根本没有接触到Delphi之前版本的不足,也就感受不到新版的优势。
      

  18.   

    这里是橘子BLOG一篇文件,也是写XE2的,可以看下。初看觉得作者有点偏激,所以想自己试试看,不过我怎么说也算是把XE2装也机器里面小跑了一下。比之那些只看完发布会就说什么划时代革命一类的要靠谱一些。还是劝大家都装一下,仔细用用看。我自已恐怕要等SP3 SP4以后了。http://blog.sina.com.cn/s/blog_68b671430100suak.html
      

  19.   


    这样的水平早点离开Delphi的好,用TVitualTree三分钟就能写出奇虎的进程管理器来,而且我就是这么写的,竟然说很难,哈哈
      

  20.   


    人家说的是软件管理器,你就扯到进程管理器。人家什么水平我不知道,好象CSDN搞的什么移动平台开发大会,请人家去演讲的。不过你说三分种写个进程管理器,那估计一天写个360或是QQ啥的也非难事。很久不开贴子,一发贴就碰见大神了。。膜拜下。
      

  21.   

    看到你的这种测试,delphi团队都哭了……
      

  22.   


    软件管理器更简单,用Delphi最简单的Scrollbox,或者TVirtualTree,或者TRichView,或者VGSense的TvgList都是个把小时就能弄出来。
      

  23.   


    一个空窗口是3M,加10个还是3M,用ASPACK压缩一下,肯定在1M
      

  24.   

    我用xe的vcl运行楼主的程序,1秒
      

  25.   


    三分钟升级成个把小时了,才发了几贴效率就下降了20倍。多斗嘴无益,不如你花个把小时搞个软件管理器出来,上传到CSDN,造福广大老百姓,我也学习学习
      

  26.   


    请装XE2,用FireMonkey的同类控件来测试,这里本来就是对比的VCL和FireMonkey的执行速度。凡事还是亲自动手一试的可靠。
      

  27.   

    FireMonkeyh的控件都可以旋转,挺有意思的的,
      

  28.   


    弄了半天你还是不会调试,你在有代码的情况下,也不知道为什么慢,这样只会拖拽控件水平的,早点离开Delphi的好。
      

  29.   


    这篇文章, 老早我也看到了。
    没看多久 就看到他写的
    举个简单的例子,要做到 360 软件管理器那样的复杂列表,或是 QQ 那样的界面效果,容易么?
    写这种东西, VC和DELPHI 我觉得是同一起跑线。
    虽然老久不用DELPHI, 闲来也来看看。 
      

  30.   


    Delphi是你开发的嘛?你要谁离开就离开?有一些人就是一瓶子不满半瓶子晃。随便写个小测试出来,有些人就容不得人家说DELPHI不好,一见就马上跳出来。嘴上总是挂着:你只会拖控件,不会测试想问个仔细为啥不会测试?那你倒是写个详细的测试出来大家看看啊?马上就JJYY不知所云最后就是让你离开DELPHI,更加不知所云张口什么什么三分钟我能做一个,某某不过个把小时写一个。现在学DELPHI都是这些肤浅之辈,真是DELPHI的悲哀。
      

  31.   

    感觉体积大也不是什么大问题,感觉很多早期的Delphier太在意这个事情了,实际上现在的硬件水平10M和1M启动时间上面没什么太大的差异,如果因此带来效果和功能的提升还是很有价值的,就好比我升级到2010的唯一目的就是能原生支持Unicode,至于生成的体积是大1倍还是2倍,我不会在乎,我的客户更不会在乎。现在一个路由器的软件都要4M了,你让软盘党怎么能不纠结。
      

  32.   

    测试的代码都已经写在上面了,确实我对XE2来说,了解不深,这个问题我也不想纠结,只是抛砖引玉而已,希望多些人去试试看了。写点有内容的东西,都回51楼了,我还没明白测试的问题在那里。
    前面说的橘子,离不离开是人家的事。其实骂也是关心,如果真的没感情,还写什么BLOG?骂DELPHI有人给发5毛?骂也是希望官方能够脚踩实地,做的更好一些。别搞BUG推销。
      

  33.   


    确实大不是个大问题,但多少是个问题,这是个态度的问题。大了,说明编译器优化部分还没有完善,肯定有一些没用的拉圾给LINK进去了。
    对比一下SQLite.刚开发时,作者就定位在500K左右,多少年过去了,现在已经是3.7的版本了。体积还是500多K,增加了多少功能,修复了多少BUG?你可以看一下RELEASE NOTE。我估计人家已经在做ASM级的优化了。为什么安卓,IPOD都用它做内部数据库?无他,品质有保证啊。他的用户手册出来都是厚厚一本书。你能想象嘛?
      

  34.   


    的确.现在手机流量那么便宜,一个十几M的程序,下载下来也就那么回事.虽然愤怒的小鸟等游戏才几百KB.
      

  35.   


    应用程序池 -- 设置应用程序池默认设置(或者选择相应的站点池/高级设置)-- 启用 32 位应用程序 = True
      

  36.   

    目标程序的体积并不是问题。
    其实,真正做项目,体积鲜有少于3M的,但,你会发现,无论你怎样添加第三方组件,delphi的目标程序鲜于大于6M的,原因在于,delphi无论怎样做,它很多扩展的 unit都本源于一些基本的Unit。
    虽然,用xe2会比d7体积大个1M,但如果你用它做项目,会发现最终目标程序,只会比用d7多1M多一点点,因为体现不会因为窗口和组件的增加而增加,这种增加不是线性的。
      

  37.   

       您们都是delphi高手,内讧不好。对其评说,无论角度怎样不同,其时都是爱它哈,纯技术争论正常,莫搞人身贬损嘛。
       
        怎样正确测试?怎样修改vcl源码?写个详细的资料让我等初学者学学……
      

  38.   

    如果用于PC,那的确没问题.但如果你是用于IOS之类的开发,问题就大了.一是手机内存有限,二是别人用手机下载很浪费带宽.
      

  39.   

    呵呵,想不到现在还有人在讨论delphi编译之后的文件体积大小。
    我早就不用delphi多年了,用java都4,5年了。不过这个问题还是想发表下愚见delphi默认静态编译,都编译到一个可执行文件。
    vc,.net编译出来的体积小?体积小就不用装vc运行库了,vc运行库下载一个也要3,4M把?
    .net运行时更是体积庞大的很。
    windows的exe启动不需要调用其他的dll啊,xe2体积是大了点,不过就大这么1,2兆,启动就慢的不行了??
    那你不妨去算算vc启动需要调用多少的dll,算算他们的体积都多少,和delphi比比看
      

  40.   

    为那几M的大小哭丧着脸真是不可理喻,难道现在还用3.5寸磁盘?即使你的确在乎那几M的大小,Debug的8M换成Release也就1M多点,如果还在乎的话,那你真得与用3.5寸的磁盘了,还得找个软驱!XE2褒贬不一,各有自己的看法,技术这东西,永无止尽,你说它不行,它就不行,因为它不可能万能,你说它行,它就行,因为它能满足你了。三分钟写出一个进程管理器,个把小时写出一个软件管理器,我算是见到牛人了,但是没看到软件。
      

  41.   

    体积大 不代表一定运行慢.
    如果因为体积大 再压缩的话 会导致更慢,因为在执行的过程多了一个解压缩过程.XE2没用过不好说,支持 android和IOS是最诱人的地方,有机会试试.
    做出的东西又健壮又轻盈的理想是不现实的,只要主流配置跑起来不费力就好了.
      

  42.   

    哈哈。。大清早起来看到这个贴,真有意思。我一直用Delphi,不过已经好几年没有写过程序了。我看回贴的大多是Dephi的Fans,不管是本来水平就很好,还是现在准备学,其实,我们可以从程序员的角度去想一想这个问题。1、以前看到有这样的争吵贴,什么“Delphi” VS “VB” VS “VC”之类的,猛扁Delphi,就有大侠(因为别人讲得好,所以我叫他大侠)这样说:“为什么只是扁Delphi,而不是给出有用的建议?其实,Delphi发展得好,对程序员只有好处没有坏处,因为程序员会多一项选择(现在的团队,一般都不是只会一种开发工具的,都是根椐要开发的软件的特点及团队技术积办来选择合适的工具),而且,开发工具也是有竞争才有进步。”所以,我觉得,这么多的Fans,与其这样吵,还不如专门开一个Delphi的Bug和建议版块,客观的进出Delphi的问题,对Delphi的发展才有好处;
    2、我对Delphi的期望,其实并不高。什么支持Win64、什么跨平台,都不是关键,关键在于:稳定。不要在使用IDE的时候弹什么错,不要VCL什么的存在很多的BUG,把文档弄好,把售后服务做好,把开发支持做好。这些方面,Delphi真的没有办法和VS比。但是,VS虽然稳定,但是也有不足。VC开发效率不高,C#又不能用内存,而且我最讨厌.net Framework了。.net?我现在的项目就是用asp.net来弄,我着着头都大。所以,每一种开发工具,都有其优缺点的。再所以,就算是Delphi不支持Win64、不跨平台,但是只要稳定,服务好,我想,还是有很多团队会用它的,因很多项目并不一定要Win64,也并不一定要跨平台。3、我用这么久的Delphi,我觉得Delphi有VS相比,有一个最严重的问题,那就是资源问题。很多人写一些底层点的东西,或是其于MS的什么什么SDK,都会选择VC,为什么?就是因为资源。在VC中,可以直接引用SDK中的Head files,在Delphi中,行吗?你必须要去翻译一次。这就麻烦了。如果Delphi团队能在Delphi中集成那些翻译好的SDK,其实很多底层的东西都可以用Delphi写,而且代码的运行效率也不差,开发效率比VC却要高出很多。可惜,Delphi程序员,要么只有自己翻译,要么只有在网上去找别人翻译好的源代码 - 这还要你人品比较好,能够找到。如果Delphi也能弄一个类假MSDN的资源区,所有的开发资源,都能免费下载到,我想,很多人都会选择Delphi的。因为Delphi适合做的项目,太多太多;4、所以,我想说,如果你喜欢Delphi,就客观的提出建议;如果你希望在开发工具方面多一种选择,就客观的提出建议;如果你有一定要经济实力,尽量买正版的Delphi;
      

  43.   

    你已经测了,那我就不测了,我先用lazarus
      

  44.   

    看了 这篇文章 忍不住不评论了 本人初学Delphi 抱着不深入的角度去学 活学 活用的角度 去学 不去公司工作的角度 去学 你们都太沉浸在 自己的编程世界里了 真正的有钱人 有多少是 搞技术的 悟性是所有知识的源泉
      

  45.   

    反正我感觉DELPHI不错的,我大学时候学软件就DELPHI感兴趣,虽然毕业后一直没有从事IT方面的工作,但是现在我们公司给门店收银软件的程序都是用delphi做的我最近也开始学习这方面的知识,哎语言这东西只要自己用着舒服够用就行了,哪那么多屁事
      

  46.   

    本人14年Delphi开发经验,看贴从来不回帖,今天看到这个帖,感觉楼主对Delphi使用程度还不深。可以这么说,Delphi到目前为止还是Windows平台上最好的开发工具,楼主帖的那个什么BLOG日志文章 http://blog.sina.com.cn/s/blog_68b671430100suak.html 我从头到尾看了一遍,这位朋友的观点很有误导性,很容易误导新手放弃学习Delphi这种是极其不负责任的作为,他说:“举个简单的例子,要做到 360 软件管理器那样的复杂列表,或是 QQ 那样的界面效果,容易么?也许任何一个有经验的 Delphi 程序员都会毫不犹豫的说,这对我来说太容易了,但是我就想问,你实现这些花多大精力?很多东西老了,跟不上时代了,也跟不上更懒的程序员了,VCL 是一个什么样的框架呢?从上往下看,扩展很容易,控件很多,从下往上看,一滩死水 。”什么叫从下往上看,一滩死水?我曾经花了很大精力研究VCL,在这里很难一句两句说清楚,我只能说.Net Framwork都是借鉴VCL的我回这个帖只是想针对Delphi做极度负面评价的朋友提个醒,在发帖前先看看你自己有无资格!
      

  47.   

    说得很对,现在的孩子啊,就会拖拉component
      

  48.   

    .net framework和delphi是一个爹,长得像很正常,
    用了14年太牛×了,但使用年限长并不代表水平一定高,
    因为有些人的技术领域很窄,只是涉及到数据库增删改查和拖拉控件。
    研究VCL并无必要,你不会比VCL做得更好,相反擅自乱动会增加bug几率,以前有些人出书描述VCL如何如何纯属浪费时间。对于应用来讲,最快最好的实现业务逻辑才是最重要,界面背后的东西,没有用户管你是怎么弄的,是不是VCL或者MFC。
    delphi是有很多不足,欠了太多本来就应该早就出现的东西,这是borland的领导层的脑残导致的,
    虽然borland最后也因此而倒闭了。但是害死了不少delphi程序员落伍找不到工作不得不转战其他语言。
      

  49.   


    很久没上来看了, 最近一直在做项目, 用的还是DELPHI...
    别扣我什么误导新手的大帽帽...还有什么资格一类的...评论一个东西要资格嘛? 需要嘛?
    我从DELPHI5用起, 做了十几年的DELPHI程序员, 那要说资格的话, 先评评你是不是有资格吧.XE2的问题, 是金子总会发光的. 时间会证明一切. 回头再看, 你就知道什么跨时代,革命性云云是不是言过其实了.
      

  50.   

    1.三分钟写出一个进程管理器,个把小时写出一个软件管理器,我深信,deeply in my heart! 我就是这种人,呵呵,鄙视我吧,飘柔就是这样自信~!但是新人千万不要误解,此高效,非彼高效!只有VCLer会发出会心的微笑!2.但是在下非常希望知道一件事情,就是.net,java,c++这些能否像delphi那样进行开发呢?她如此犀利,点穴,一针见血,直捣黄龙!什么语言我不关心,我关心的是我懒洋洋的程序人生!3.我爱delphi,i love borland and i respect, admire anders! 
      

  51.   


    真能扯
    调个Add你就知道 delphiXE 不好了?
    你真牛13
    不得不佩服那些装13的人
      

  52.   

    很久没有上来回贴子, 没想到居然还有人看...那些个动不动就骂人的, 只能举报了...不知道有没有用. 如果学DELPHI是这些人的话, 那么DELPHI真的是未路了...东西好不好, 实践出真知. 最近DELPHI用户大量下滑, 已经是不争的事实了. 而且XE2怎么样? 划时代? 革命? 我没看到什么是革命...接下来看WIN8的应用开发怎么样. 如果DELPHI支持不好, 只能果断换C#了. 必竟现在做的主要是触控应用.公司大量的老系统都是DELPHI写的, 现在还在用DELPHI6, 不过个人觉得可能的话还是升级到DELPHI2010比较好点, 商用的话. UniCode还是有很大好处的.我们需要什么的编程环境:
    1, 稳定, 高效是第一重要. TADODATASET的速度是个大问题, 10W条以上遍历都很慢, 不得不改用原生recordset.
    2, 对于各种数据库的支持, 特别是MYSQL, SQLITE这样的.
    3, 对于64位, 大内存的支持. 这个将来肯定要用的.
    4, 稳定高效的多线程, 网络并发处理控制, 最好支持完成端口的.
    5, 还有软件分级, 免费的学习版, 低价的个人版, 以及高端的商用企业版本.
      

  53.   

    我今天测试跟楼主有些差异:如果测试LISTBOX组件,确实不论是批量更新,还是即时更新,FM要比VCL慢很多,但我用TMEMO组件测试,则FM比VCL并不差,甚至还要好很多,代码:CONST
      N :CARDINAL = 1000;
    var
      I:integer;
      S_TIME,E_TIME:cardinal;
    begin   S_TIME :=  GetTickCount();   MEMO1.Lines.BeginUpdate  ;//注意:在FM中改为:MEMO1.BeginUpdate 
       for I  := 1 to N do
       BEGIN
           memo1.Lines.Add('科学技术史 ,中国');
       END;
       MEMO1.Lines.EndUpdate  ;//注意:在FM中改为:MEMO1.EndUpdate    E_TIME := GetTickCount();   FORM1.Caption := INTTOSTR(E_TIME - S_TIME);多次测试,结果显示:如果在批量更新下(也就是启用BeginUpdate),FM跟VCL几乎一样,FM时间为:250多,而VCL的时间为:290多而在即时更新下((不启用BeginUpdate)),则FM远比VCL快,FM时间为:1300多,而VCL的时间为:7800多。
    所以,不能仅仅从某一个控件上得执行情况来推断整个系统的快慢。
      

  54.   

    我将应用程序升级到XE2,exe,dll增大40%左右,但显示和运行计算速度却获40%左右的提升,尤其计算速度,那是提高相当的明显!
      

  55.   

    本人是一步将代码从CB6直接升到XE2,由于代码写得比较严谨,控件用得极少,几天时间就轻松移植到XE2,运行良好,程序稳定,看中Xe2的64位和win8的平板功能,准备将应用程序支持win平板!
    这次代码移植最主要就是String的不同!
      

  56.   

    用事实说话,Cb6与Xe2编译实际结果如下,最具说服力:主程序exe在CB6下编译7.07M,在XE2下编译10.21M,增大44%
    计算Dll在CB6下编译2.78M,在XE2下编译4.28M,增大54%
    打印Dll在CB6下编译3.33M,在XE2下编译4.83M,增大45%应用程序计算速度在同一台机器和同样数据下测试,原CB6下的程序需要9秒,经Xe2下的程序需要5秒左右!
      

  57.   

    兄弟,这也叫测试,Delphi团队真的要哭死了。
      

  58.   

    测试基准都不同,VCL工作在标准windows GUI模式,FMX工作启用的是D2D模式,
    你用VCL转换到D2D模式,再和FMX比较性能,OK?
    就好像DOS的字符界面和windows GUI界面比较性能,基准不同,比较结果都不同。
    多学习吧兄弟。