Delphi2007以后编译器进步的简单测试

刚刚看了有个兄弟用最新的FreePascal和Delphi7的编译器评测.觉得有点不公平.毕竟D7是10年前的产品.现在Delphi都出到XE3了.

用了个简单的代码测试了一下Delphi编译器的变化.

涵盖Delphi的版本XE3,XE2,XE,2007

测试代码如下

program matrix;

{$APPTYPE CONSOLE}
{$DEFINE USEINLINE}

uses
Windows;

const
SIZE = 30;
msg =
{$IFDEF DEBUG}
'Debug Version'
{$ELSE}
'Release Version'
{$ENDIF}
+
{$IFDEF USEINLINE}
' inline'
{$ELSE}
'!inline'
{$ENDIF}
;
type TMatrix = array[0..SIZE-1, 0..SIZE-1] of integer;

procedure mkmatrix( rows, cols : integer; var mx : TMatrix); {$IFDEF USEINLINE}inline;{$ENDIF}
var
R, C, count : integer;
begin
Dec(rows); Dec(cols);
count:=1;
for R:=0 to rows do
for C:=0 to cols do begin
mx[R, C] := count;
Inc(count);
end;
end;

procedure mmult(rows, cols: integer; const m1, m2: TMatrix; var mm: TMatrix); {$IFDEF USEINLINE}inline;{$ENDIF}
var
i, j, k, val: integer;
begin
Dec(rows); Dec(cols);
for i:=0 to rows do
for j:=0 to cols do begin
val:=0;
for k:=0 to cols do
Inc(val, m1[i,k]*m2[k,j]);
mm[i,j] := val;
end;
end;

var NUM, code, i: integer;
M1, M2, MM: TMatrix;
C : DWORD;
begin
NUM:=1;
if ParamCount=1 then Val(ParamStr(1),NUM,code);

mkmatrix(SIZE, SIZE, M1);
mkmatrix(SIZE, SIZE, M2);
C := GetTickCount;
for i:=0 to NUM do
mmult(size, size, M1, M2, MM);
c := GetTickCount - c;
WriteLn( MM[0, 0],' ',MM[2, 3],' ',MM[3, 2],' ',MM[4, 4]);
WriteLn( msg);
WriteLn( ' C = ', c, ' ms');
end.

顺便测试了一下inline的效率.

编译好在控制台运行,给100000的参数,也就是循环十万次

XE3 Release inline???????? 2013 1997
XE3 Release not use inline 2574 2574

XE2 Release inline???????? 2013 1997
XE2 Release not use inline 2574 2574

XE Release inline???????? 2574 2574
XE Release not use inline 2044 2044

2007 Release inline???????? 2605 2621
2007 Release not use inline 2590 2589

从结果上可以看出XE2的编译器效率等同于XE3.这两个版本编译器效率方面变化不大.

但是诡异的事情来了,在XE和2007版本上inline居然比不使用inline代码的效率更低,闪瞎我的眼睛啊.瞪大了眼睛完完全全重新测试几次之后都是这个结果.我只好认命了,也许是我这段代码本身对这两个编译是个特例.

又用Delphi2007去掉了编译器优化Optimization选项.这下看到inline的效果了.

2007 Debug inline???????? 8097 8097
2007 Debug not use inline 8236 8236

也就是在Delphi2007(也包括XE)中代码优化有时候会把inline弄得更糟.或者可以这么说,在Delphi2007(也包括XE)中line优化做的还没有非inline优化做得好,直到XE2情况才发生改变.由于我手里没有Delphi2010对Delphi2010就不做评测了.

从数据可以看出Delphi编译器的效率还是有一定的提升.特别是inline函数的优化上,有大幅度的提升.估计他们最近几个版本在这方面下了功夫,毕竟最近优化了泛型机制,泛型和inline很多地方是相通的.

有兴趣的朋友们可以用上面的代码做一下Delphi7和其他版本Delphi在相同环境下的效率.

此条目发表在Delphi分类目录。将固定链接加入收藏夹。

Delphi2007以后编译器进步的简单测试》有132条回应

  1. Pingback引用通告: buy cialis

  2. Pingback引用通告: trustedmdstorefy.com

  3. Pingback引用通告: 1 seriya

  4. Pingback引用通告: Êîíñóëüòàöèÿ ïñèõîëîãà

  5. Pingback引用通告: hqcialismht.com

  6. Pingback引用通告: rick and morty season 3

  7. Pingback引用通告: Evil-Season-2

  8. Pingback引用通告: serial

  9. Pingback引用通告: #1plus1

  10. Pingback引用通告: 2020

  11. Pingback引用通告: watch online TV LIVE

  12. Pingback引用通告: parazity-oskar-2020

  13. Pingback引用通告: human design

  14. Pingback引用通告: DSmlka

  15. Pingback引用通告: viagra

  16. Pingback引用通告: viagra online

  17. Pingback引用通告: +

  18. Pingback引用通告: ¯jak Son³k

  19. Pingback引用通告: astrolog

  20. Pingback引用通告: film-kalashnikov-watch

  21. Pingback引用通告: generic cialis

  22. Pingback引用通告: cialis 20mg

  23. Pingback引用通告: watch online

  24. Pingback引用通告: kinoxaxru.ru

  25. Pingback引用通告: pobachennya u vegas

  26. Pingback引用通告: Proshanie so Stalinym

  27. Pingback引用通告: strelcov 2020

  28. Pingback引用通告: film t-34

  29. Pingback引用通告: online pharmacy

  30. Pingback引用通告: online pharmacy canada

  31. Pingback引用通告: Beograd film 2020

  32. Pingback引用通告: psiholog

  33. Pingback引用通告: psixolog

  34. Pingback引用通告: psyhelp_on_line

  35. Pingback引用通告: coronavirus

  36. Pingback引用通告: PSYCHOSOCIAL

  37. Pingback引用通告: rasstanovka hellinger

  38. Pingback引用通告: Cherekasi film 2020

  39. Pingback引用通告: film doktor_liza

  40. Pingback引用通告: djoker film

  41. Pingback引用通告: t.me/psyhell

  42. Pingback引用通告: Ïñèõîëîã îíëàéí

  43. Pingback引用通告: bitly.com

  44. Pingback引用通告: viagra 100mg

  45. Pingback引用通告: viagra price

  46. Pingback引用通告: viagra generic

  47. Pingback引用通告: viagra coupon

  48. Pingback引用通告: cheap viagra

  49. Pingback引用通告: cialis

  50. Pingback引用通告: cialis coupon

  51. Pingback引用通告: canadian pharmacy cialis

  52. Pingback引用通告: cialis 5mg

  53. Pingback引用通告: rlowcostmd.com

  54. Pingback引用通告: bitly

  55. Pingback引用通告: movies-tekstmovies-tekst

  56. Pingback引用通告: Zemlyane 2005 smotret onlajn

  57. Pingback引用通告: smotret onlajn besplatno v kachestve hd 1080

  58. Pingback引用通告: gusmeasu.com

  59. Pingback引用通告: movies-unhinged-film

  60. Pingback引用通告: malenkie-zhenshhiny-2020

  61. Pingback引用通告: dom 2

  62. Pingback引用通告: zoom-psykholog

  63. Pingback引用通告: zoom-viber-skype

  64. Pingback引用通告: Vratar Galaktiki Film, 2020

  65. Pingback引用通告: Vratar

  66. Pingback引用通告: Cherkassy 2020

  67. Pingback引用通告: chernobyl-hbo-2019-1-sezon

  68. Pingback引用通告: moskva-psiholog

  69. Pingback引用通告: batmanapollo.ru

  70. Pingback引用通告: 323

  71. Pingback引用通告: 525

  72. Pingback引用通告: dom2-ru

  73. Pingback引用通告: psy psy psy psy

  74. Pingback引用通告: krsmi.ru

  75. Pingback引用通告: like-v.ru

  76. Pingback引用通告: CFOSPUK

  77. Pingback引用通告: MAMprEj

  78. Pingback引用通告: fgu0ygW

  79. Pingback引用通告: batmanapollo

  80. Pingback引用通告: tsoy

  81. Pingback引用通告: 44548

  82. Pingback引用通告: 44549

  83. Pingback引用通告: hod-korolevy-2020

  84. Pingback引用通告: HD

  85. Pingback引用通告: 158444

  86. Pingback引用通告: groznyy-serial-2020

  87. Pingback引用通告: 38QvPmk

  88. Pingback引用通告: bitly.com/doctor-strange-hd

  89. Pingback引用通告: bitly.com/eternals-online

  90. Pingback引用通告: bitly.com/maior-grom

  91. Pingback引用通告: matrica-film

  92. Pingback引用通告: dzhonuikfilm4

  93. Pingback引用通告: bitly.com/batman20212022

  94. Pingback引用通告: bitly.com/venom-2-smotret-onlajn

  95. Pingback引用通告: bitly.com/nevremyaumirat

  96. Pingback引用通告: bitly.com/kingsmankingsman

  97. Pingback引用通告: bitly.com/3zaklyatie3

  98. Pingback引用通告: bitly.com/1dreykfilm

  99. Pingback引用通告: bitly.com/topgunmavericktopgun

  100. Pingback引用通告: bitly.com/flash2022

  101. Pingback引用通告: bitly.com/fantasticheskietvari3

  102. Pingback引用通告: bitly.com/wonderwoman1984hd

  103. Pingback引用通告: 1444

  104. Pingback引用通告: cleantalkorg2.ru

  105. Pingback引用通告: 232dfsad

  106. Pingback引用通告: cleantalkorg2.ru/sitemap.xml

  107. Pingback引用通告: join vk

  108. Pingback引用通告: vk login

  109. Pingback引用通告: svaty—7—sezon

  110. Pingback引用通告: svaty 7 sezon

  111. Pingback引用通告: svaty 7

  112. Pingback引用通告: tik tok

  113. Pingback引用通告: 666

  114. Pingback引用通告: The Revenant

  115. Pingback引用通告: 00-tv.com

  116. Pingback引用通告: 2021

  117. Pingback引用通告: D4

  118. Pingback引用通告: 777

  119. Pingback引用通告: link

  120. Pingback引用通告: 4569987

  121. Pingback引用通告: news news news

  122. Pingback引用通告: psy

  123. Pingback引用通告: psy2022

  124. Pingback引用通告: projectio-freid

  125. Pingback引用通告: kinoteatrzarya.ru

  126. Pingback引用通告: topvideos

  127. Pingback引用通告: video

  128. Pingback引用通告: afisha-kinoteatrov.ru

  129. Pingback引用通告: Ukrainskie-serialy

  130. Pingback引用通告: site

  131. Pingback引用通告: top

  132. Pingback引用通告: soderzhanki-3-sezon-2021.online

评论已关闭。