Article View: pl.comp.lang.pascal
Article #93046Re: DynamicArray kontra StaticArray
From: Łukasz 'Maly' Ostrowski
Date: Fri, 02 Jul 2010 07:31
Date: Fri, 02 Jul 2010 07:31
87 lines
3282 bytes
3282 bytes
On Fri, 2 Jul 2010 07:01:26 +0000 (UTC), Mirek wrote: > On czw, 01 lip 2010 23:40:50 in article news:<i0j212$c42$1@news.onet.pl> > Wiktor S. wrote: >> >> >> i dostaję >> >> Tablica OpenArray 00.00.46 >> Tablica DefArray 00.00.39 E:\WorkShop\fpc>c:\dev\fpc\bin\i386-win32\fpc -O3 test Free Pascal Compiler version 2.4.0 [2009/12/18] for i386 Copyright (c) 1993-2009 by Florian Klaempfl Target OS: Win32 for i386 Compiling test.pas Linking test.exe 27 lines compiled, 0.1 sec , 63296 bytes code, 11064 bytes data E:\WorkShop\fpc>test Tablica OpenArray 00:00:32 Tablica DefArray 00:00:32 E:\WorkShop\fpc>test Tablica OpenArray 00:00:32 Tablica DefArray 00:00:32 Tak jakby, pomijalna różnica. > I dostałeś wynik odwrotny niż w pierwszym poście ;) > > U mnie dla pgm1 wyniki były równe, a dla pgm2 (niestety mam tylko fpc 2.2.0) > jest: > > Tablica OpenArray 00:01:15 > Tablica DefArray 00:00:34 > > Skompiluj z opcją -al i wyszukaj w pliku pgm.s wnętrza pętli, u mnie > wyglądają tak: > > //------------- > movl U_P$PROGRAM_OPENARRAY,%eax > movl 28(%eax),%ecx > movl 16(%eax),%eax > addl %ecx,%eax > movl U_P$PROGRAM_OPENARRAY,%ecx > movl %eax,28(%ecx) > > //-------------- > movl U_P$PROGRAM_DEFARRAY+28,%edx > movl U_P$PROGRAM_DEFARRAY+16,%eax > addl %edx,%eax > movl %eax,U_P$PROGRAM_DEFARRAY+28 > > Czyli OPENARRAY ma więcej o dwa ładowania rejestru i trzy dodawania (przy > wyznaczaniu adresu). Czego się spodziewamy ze względu na internalsy dynamicznego arraya. Co do wygenerowanego asma mamy zgodę, z różnicą tyczącą sie allokacji rejestrów, która to pewnie powoduje u mnie różnicę w postaci braku różnicy ;-) : .Lj31: incl %edi movl U_P$PROGRAM_OPENARRAY,%eax movl U_P$PROGRAM_OPENARRAY,%ebx movl 28(%eax),%ecx movl 16(%ebx),%eax addl %eax,%ecx movl U_P$PROGRAM_OPENARRAY,%eax movl %ecx,28(%eax) cmpl $1000000000,%edi jl .Lj31 .Lj65: incl %edi movl U_P$PROGRAM_DEFARRAY+28,%edx movl U_P$PROGRAM_DEFARRAY+16,%ecx addl %ecx,%edx movl %edx,U_P$PROGRAM_DEFARRAY+28 cmpl $1000000000,%edi jl .Lj65 Co nadal nie robi takiej różnicy żeby zwracać na to uwagę ;-). -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://l3v.pl/
Technical Details
Message-ID:
<xqxlz4yswhvy.1466ro3qpaxiy.dlg@40tude.net>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mailReferences:
<60b5.000013db.4c2c66b2@newsgate.onet.pl> <i0j1hg$ar7$1@news.onet.pl> <i0j212$c42$1@news.onet.pl> <i0k2s6$shj$1@inews.gazeta.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.dialog.net.pl!not-for-mail From: Łukasz 'Maly' Ostrowski <maly@USUNnemo.pl> Newsgroups: pl.comp.lang.pascal Subject: Re: DynamicArray kontra StaticArray Date: Fri, 2 Jul 2010 09:31:56 +0200 Organization: Acme Lines: 87 Message-ID: <xqxlz4yswhvy.1466ro3qpaxiy.dlg@40tude.net> References: <60b5.000013db.4c2c66b2@newsgate.onet.pl> <i0j1hg$ar7$1@news.onet.pl> <i0j212$c42$1@news.onet.pl> <i0k2s6$shj$1@inews.gazeta.pl> NNTP-Posting-Host: static-78-9-71-129.ssp.dialog.net.pl Mime-Version: 1.0 X-Trace: news.dialog.net.pl 1278055933 8118 78.9.71.129 (2 Jul 2010 07:32:13 GMT) X-Complaints-To: abuse@dialog.net.pl NNTP-Posting-Date: Fri, 2 Jul 2010 07:32:13 +0000 (UTC) User-Agent: 40tude_Dialog/2.0.15.1 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit