导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2016/11/18 17:25:13
标题:
测了下Win32,Berlin up2,发现编译后程序的执行效率略低于seattle up1
浏览:3370
加入我的收藏
楼主:
Win32下,相同一段zlib的压缩代码,Berlin up2 比seattle up1编译出来程序,执行速度略低3-5%,看来动了win32编译器
----------------------------------------------
-
作者:
2016/11/18 17:26:17
1楼:
我仅测一小段相同代码,编译器开关都是一致,可能不具有代表性。如果不在乎效率可以忽略
----------------------------------------------
-
作者:
2016/11/18 17:55:37
2楼:
百分3左右的,我觉得更可能的是误差。
----------------------------------------------
QQ: 9717005 我的Blog:http://www.cnblogs.com/anydelphi/
作者:
2016/11/18 18:00:48
3楼:
相同函数,测了几十遍了,不会是误差
----------------------------------------------
-
作者:
2016/11/18 18:05:21
4楼:
相关源代码地址http://www.base2ti.com/
----------------------------------------------
-
作者:
2016/11/18 20:26:53
5楼:
建议不要关注这个了,态度决定一切,因为内存大所以随意浪费内存(lock field), 因为硬盘大,所以任exe膨胀(RTTI),因此,这是必然结果。Delphi2007一个空exe 700k,然后每出一个版本大一点,都称之为“可忽略不计”,其结果是到了现在,一个空exe,2M大小,然后看看他们自己开发的Delphi的Bin目录,一大排10M以上的PE文件。 就坦然接受吧,纠结也无济于事。
----------------------------------------------
-
作者:
2016/11/18 20:50:42
6楼:
如果 DELPHI 和他的组件是用DLEPHI 开发的,那么他们为啥不觉得 IDE 不好用呢? 我希望他们能多用 DELPHI 开发 DELPHI,这样IDE 的问题,他们自己就能发现了。
----------------------------------------------
(C)(P)Flying Wang
作者:
2016/11/18 21:02:24
7楼:
我是试一下新的编译器,发现相同代码编译出来执行比之前版本的程序慢,seattle Up1编译后的执行时间238ms,用Berlin Up2编译后执行249ms,慢就慢吧,如果用来做客户端,感觉不出来,没什么关系,做服务器端,会有些影响
----------------------------------------------
-
作者:
2016/11/18 21:16:39
8楼:
但并不是所有代码编译出来都运行慢,有些计算会比seattle快一点,不好说,要用就凑合用
----------------------------------------------
-
作者:
2016/11/18 21:45:32
9楼:
后面会越来越慢,这几乎不用怀疑的。 让我们来看看TList的Add function TList.Add(Item: Pointer): Integer; begin Result := FCount; if Result = FCapacity then Grow; FList[Result] := Item; Inc(FCount); if (Item <> nil) and (ClassType <> TList) then Notify(Item, lnAdded); end; 再来看看TList<T>的Add function TList<T>.Add(const Value: T): Integer; begin if IsManagedType(T) then begin if (SizeOf(T) = SizeOf(Pointer)) and (GetTypeKind(T) <> tkRecord) then Result := FListHelper.InternalAddMRef(Value, GetTypeKind(T)) else if GetTypeKind(T) = TTypeKind.tkVariant then Result := FListHelper.InternalAddVariant(Value) else Result := FListHelper.InternalAddManaged(Value); end else case SizeOf(T) of 1: Result := FListHelper.InternalAdd1(Value); 2: Result := FListHelper.InternalAdd2(Value); 4: Result := FListHelper.InternalAdd4(Value); 8: Result := FListHelper.InternalAdd8(Value); else Result := FListHelper.InternalAddN(Value); end; end; TList<T>天生慢,我也能理解, 但是我无法理解的是,将classes单元中,原来稳定的,使用TList的代码全部换成TList<T>,比如TCollection,classes是相对稳定的单元,很少需要大幅修改,呵呵,难道牺牲稳定的执行效率,只是为了写代码好看么?还有比这更愚蠢的事情吗。 所以,从这种做事态度来看,以后会越来越慢。
----------------------------------------------
-
作者:
2016/11/18 22:00:54
10楼:
做IDE不赚钱吧,如果和做CPU一样,有巨大利润,估计就会去优化了,现在Delphi框架有了,估计没动力去优化
----------------------------------------------
-
作者:
2016/11/18 22:10:39
11楼:
zlib压缩代码不具有代表性,因为zlib大部分功能不是Delphi编译的,而是CBuilder编译的Zlib的c代码,Delphi只是把这个obj链接进来呢。 也许zlib用CBuilder重新编译过了,调整过某些参数
----------------------------------------------
武稀松http://www.raysoftware.cn
作者:
2016/11/18 22:18:45
12楼:
我测的不是Delphi自带的zlib,是http://www.base2ti.com/下的独立的zlib,用seattle和berlin各编译运行,做对比
----------------------------------------------
-
作者:
2016/11/18 22:29:08
14楼:
做客户端一般考虑需求,不考虑效率,做服务器是要考虑性能。这个问题通常情况都可以忽略,我只是测试一下,告诉一下大伙,知道一下
----------------------------------------------
-
作者:
2016/11/20 15:08:08
15楼:
楼主精神值得赞赏。。。。顶
----------------------------------------------
阳光总在
作者:
lps (lps)
★☆☆☆☆
-
盒子活跃会员
2016/11/20 15:47:35
16楼:
同意5楼
----------------------------------------------
-
作者:
2016/11/20 21:05:58
17楼:
//哪位时间,测一下seattle up1和berlin up2编译后计算时间,我的机器berlin up2编译后运行慢一点 procedure TForm81.thlistTime; var i: Integer; d1: TStopwatch; begin d1 := TStopwatch.StartNew; for i := 1 to 10000 * 10000 do begin ls.LockList; try finally ls.UnlockList; end; end; d1.Stop; Caption := FormatFloat('0', d1.ElapsedMilliseconds); end;
----------------------------------------------
-
作者:
2016/11/20 22:47:12
18楼:
上面过程漏了定义:ls: TThreadList;
----------------------------------------------
-
作者:
lps (lps)
★☆☆☆☆
-
盒子活跃会员
2016/11/20 22:56:01
19楼:
这个测试真心没有什么意义,越来越慢是肯定的
----------------------------------------------
-
作者:
2016/11/20 23:33:52
20楼:
有啊,服务器程序的基本语句,每秒好几百的次
----------------------------------------------
-
作者:
lps (lps)
★☆☆☆☆
-
盒子活跃会员
2016/11/21 0:13:42
21楼:
服务器不是这样测试的,应当是量不要包含其他单元,编译器通过开关优化,最后效率基本和delphi的版本无关了,不用测试了
----------------------------------------------
-
作者:
lps (lps)
★☆☆☆☆
-
盒子活跃会员
2016/11/21 0:15:04
22楼:
比如楼主这个功能,最后就是一个dll! 另外,也基本和VC、delphi什么的无关了,差别很小了
----------------------------------------------
-
作者:
2016/11/21 7:26:23
23楼:
我只是举了个相同、几乎不能再简单一段语句,用不同的delphi版本编译然后运行,观察其效率,发现berlin比seattle慢一点,可能类库、编译器等变了,这种细微变化,通常是可以忽略的
----------------------------------------------
-
作者:
2016/11/21 12:31:34
24楼:
就是需要有楼主这样的人,delphi现在代码 真的越来越不严谨了,很多低级错误,看着就害怕
----------------------------------------------
-
作者:
2016/11/21 15:55:58
25楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2016/11/21 17:15:45
26楼:
跨平台肯定要付出一些代价的,关键是值不值得。 瞎想一下:某年某月某日,Delphi由于编译出来的代码执行太慢,加入了JIT…… ^o^
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
作者:
2016/11/21 17:16:38
27楼:
不用泛型也能支持移动。 emb 就是懒,不想维护太多的代码而已。
----------------------------------------------
(C)(P)Flying Wang
作者:
2016/11/21 17:26:50
28楼:
…… 被禁用帐号,帖子内容自动屏蔽! ……
----------------------------------------------
发布广告,禁用帐号!
作者:
2016/11/22 15:48:48
29楼:
支持楼主,顶楼主!
----------------------------------------------
Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!Delphi威武!千秋万代,一统江湖!我去WC吐一会儿去!
作者:
2016/11/22 18:24:46
30楼:
Berlin Update2 下一个版本,该什么了? Update3 。还是新的代号。
----------------------------------------------
-
作者:
2016/11/22 21:58:24
31楼:
Godzilla
----------------------------------------------
-