刚刚看了有个兄弟用最新的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在相同环境下的效率.
Pingback引用通告: buy cialis
Pingback引用通告: trustedmdstorefy.com
Pingback引用通告: 1 seriya
Pingback引用通告: Êîíñóëüòàöèÿ ïñèõîëîãà
Pingback引用通告: hqcialismht.com
Pingback引用通告: rick and morty season 3
Pingback引用通告: Evil-Season-2
Pingback引用通告: serial
Pingback引用通告: #1plus1
Pingback引用通告: 2020
Pingback引用通告: watch online TV LIVE
Pingback引用通告: parazity-oskar-2020
Pingback引用通告: human design
Pingback引用通告: DSmlka
Pingback引用通告: viagra
Pingback引用通告: viagra online
Pingback引用通告: +
Pingback引用通告: ¯jak Son³k
Pingback引用通告: astrolog
Pingback引用通告: film-kalashnikov-watch
Pingback引用通告: generic cialis
Pingback引用通告: cialis 20mg
Pingback引用通告: watch online
Pingback引用通告: kinoxaxru.ru
Pingback引用通告: pobachennya u vegas
Pingback引用通告: Proshanie so Stalinym
Pingback引用通告: strelcov 2020
Pingback引用通告: film t-34
Pingback引用通告: online pharmacy
Pingback引用通告: online pharmacy canada
Pingback引用通告: Beograd film 2020
Pingback引用通告: psiholog
Pingback引用通告: psixolog
Pingback引用通告: psyhelp_on_line
Pingback引用通告: coronavirus
Pingback引用通告: PSYCHOSOCIAL
Pingback引用通告: rasstanovka hellinger
Pingback引用通告: Cherekasi film 2020
Pingback引用通告: film doktor_liza
Pingback引用通告: djoker film
Pingback引用通告: t.me/psyhell
Pingback引用通告: Ïñèõîëîã îíëàéí
Pingback引用通告: bitly.com
Pingback引用通告: viagra 100mg
Pingback引用通告: viagra price
Pingback引用通告: viagra generic
Pingback引用通告: viagra coupon
Pingback引用通告: cheap viagra
Pingback引用通告: cialis
Pingback引用通告: cialis coupon
Pingback引用通告: canadian pharmacy cialis
Pingback引用通告: cialis 5mg
Pingback引用通告: rlowcostmd.com
Pingback引用通告: bitly
Pingback引用通告: movies-tekstmovies-tekst
Pingback引用通告: Zemlyane 2005 smotret onlajn
Pingback引用通告: smotret onlajn besplatno v kachestve hd 1080
Pingback引用通告: gusmeasu.com
Pingback引用通告: movies-unhinged-film
Pingback引用通告: malenkie-zhenshhiny-2020
Pingback引用通告: dom 2
Pingback引用通告: zoom-psykholog
Pingback引用通告: zoom-viber-skype
Pingback引用通告: Vratar Galaktiki Film, 2020
Pingback引用通告: Vratar
Pingback引用通告: Cherkassy 2020
Pingback引用通告: chernobyl-hbo-2019-1-sezon
Pingback引用通告: moskva-psiholog
Pingback引用通告: batmanapollo.ru
Pingback引用通告: 323
Pingback引用通告: 525
Pingback引用通告: dom2-ru
Pingback引用通告: psy psy psy psy
Pingback引用通告: krsmi.ru
Pingback引用通告: like-v.ru
Pingback引用通告: CFOSPUK
Pingback引用通告: MAMprEj
Pingback引用通告: fgu0ygW
Pingback引用通告: batmanapollo
Pingback引用通告: tsoy
Pingback引用通告: 44548
Pingback引用通告: 44549
Pingback引用通告: hod-korolevy-2020
Pingback引用通告: HD
Pingback引用通告: 158444
Pingback引用通告: groznyy-serial-2020
Pingback引用通告: 38QvPmk
Pingback引用通告: bitly.com/doctor-strange-hd
Pingback引用通告: bitly.com/eternals-online
Pingback引用通告: bitly.com/maior-grom
Pingback引用通告: matrica-film
Pingback引用通告: dzhonuikfilm4
Pingback引用通告: bitly.com/batman20212022
Pingback引用通告: bitly.com/venom-2-smotret-onlajn
Pingback引用通告: bitly.com/nevremyaumirat
Pingback引用通告: bitly.com/kingsmankingsman
Pingback引用通告: bitly.com/3zaklyatie3
Pingback引用通告: bitly.com/1dreykfilm
Pingback引用通告: bitly.com/topgunmavericktopgun
Pingback引用通告: bitly.com/flash2022
Pingback引用通告: bitly.com/fantasticheskietvari3
Pingback引用通告: bitly.com/wonderwoman1984hd
Pingback引用通告: 1444
Pingback引用通告: cleantalkorg2.ru
Pingback引用通告: 232dfsad
Pingback引用通告: cleantalkorg2.ru/sitemap.xml
Pingback引用通告: join vk
Pingback引用通告: vk login
Pingback引用通告: svaty7sezon
Pingback引用通告: svaty 7 sezon
Pingback引用通告: svaty 7
Pingback引用通告: tik tok
Pingback引用通告: 666
Pingback引用通告: The Revenant
Pingback引用通告: 00-tv.com
Pingback引用通告: 2021
Pingback引用通告: D4
Pingback引用通告: 777
Pingback引用通告: link
Pingback引用通告: 4569987
Pingback引用通告: news news news
Pingback引用通告: psy
Pingback引用通告: psy2022
Pingback引用通告: projectio-freid
Pingback引用通告: kinoteatrzarya.ru
Pingback引用通告: topvideos
Pingback引用通告: video
Pingback引用通告: afisha-kinoteatrov.ru
Pingback引用通告: Ukrainskie-serialy
Pingback引用通告: site
Pingback引用通告: top
Pingback引用通告: soderzhanki-3-sezon-2021.online