Article View: pl.comp.lang.pascal
Article #93048Re: DynamicArray kontra StaticArray
From: webmajsterek
Date: Mon, 05 Jul 2010 10:38
Date: Mon, 05 Jul 2010 10:38
86 lines
3836 bytes
3836 bytes
>
> Albo masz przedwojenny komputer, albo naprawdę nie wiesz
> jak się kompiluje z optymalizacjami:
>
Komputer wspólczesny 3 GHz .
Jak optymalizacja to coś więcej niż ustawienie w opcjiach kompilatora
odpowiedniego pola lub wywlołanie fpc z opcja -O3 to możesz mnie nauczyć tej
sztuki .
Chyba rozgryzłęm problem -- winy jest FPC -- a właściwie jego wersje .
Przetestowałęm szybkośc programu dla FPC 2.4.1 , FPC 2.5.1 z czerwca (tej
używałęm ) i FPC 2.5.1 z lipca .
fpc test.pas
2.4.1\bin\i386-win32>test
Plus DefArray 00:00:46
Plus OpenArray 00:00:51
Plus Pointer DefArray 00:00:51
fpc -O3 test.pas
2.4.1\bin\i386-win32>test
Plus DefArray 00:00:15
Plus OpenArray 00:00:32
Plus Pointer DefArray 00:00:34
pp\bin\i386-win32>fpc test.pas
Free Pascal Compiler version 2.5.1 [2010/06/21] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Win32 for i386
pp\bin\i386-win32>test
Plus DefArray 00:00:46
Plus OpenArray 00:00:54
Plus Pointer DefArray 00:00:54
pp\bin\i386-win32>fpc -O3 test.pas
Free Pascal Compiler version 2.5.1 [2010/06/21] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Win32 for i386
pp\bin\i386-win32>test
Plus DefArray 00:00:43
Plus OpenArray 00:00:51
Plus Pointer DefArray 00:00:45
pp1\bin\i386-win32>fpc test.pas
Free Pascal Compiler version 2.5.1 [2010/07/04] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Win32 for i386
pp1\bin\i386-win32>test
Plus DefArray 00:00:46
Plus OpenArray 00:00:53
Plus Pointer DefArray 00:00:51
pp1\bin\i386-win32>fpc -O3 test.pas
Free Pascal Compiler version 2.5.1 [2010/07/04] for i386
Copyright (c) 1993-2009 by Florian Klaempfl
Target OS: Win32 for i386
pp1\bin\i386-win32>test
Plus DefArray 00:00:43
Plus OpenArray 00:00:48
Plus Pointer DefArray 00:00:46
fpc 2.4.1 najlepiej optymalizuje --dla statycznych tablic tak samo jak delphi a
dla dynamicznych jest tylko 2 razy gorszy od delphi -- późniejsze wersje są już
dla dynamicznych i statycznych równo 3 razy wolniejsze .
Pozniejsze wersje niż 2.4.1 nie potrfią zoptymalizować kodu .
>
> A wynik dla dynamic arraya i pointera na arraya jest taki sam,
> jednocześnie gorszy, ponieważ masz jeden więcej poziom pointer
> indirection. Bo generalnie dynamiczny array to po prostu
> pointer na tablicę.
pytałęm się o te tablice dlatego ze FPC dawał ( daje ) różne wyniki dla
tablicy różnie zdefiniowanych a spełniające te same zadania ( i teoretycznie
powinny być równie szybkie ) np:
type TArray=Array[0..0] of Longint;
tab1:array of longint;
tab2:^TArray;
i dostęp do tab2 był znacznie szybszy .
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
Technical Details
Message-ID:
<47f6.00000185.4c31b628@newsgate.onet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.plReferences:
<1lb4zd4h3ch2p$.yy4qlystx25o$.dlg@40tude.net>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.rmf.pl!agh.edu.pl!news.agh.edu.pl!news.onet.pl!newsgate.onet.pl!niusy.onet.pl From: webmajsterek@poczta.onet.pl Newsgroups: pl.comp.lang.pascal Subject: Re: DynamicArray kontra StaticArray Date: Mon, 05 Jul 2010 12:38:32 +0200 Organization: Onet.pl Lines: 86 Sender: news@newsgate.onet.pl Message-ID: <47f6.00000185.4c31b628@newsgate.onet.pl> References: <1lb4zd4h3ch2p$.yy4qlystx25o$.dlg@40tude.net> NNTP-Posting-Host: newsgate.onet.pl Mime-Version: 1.0 X-Trace: newsgate.onet.pl 1278326313 30900 213.180.130.18 (5 Jul 2010 10:38:33 GMT) X-Complaints-To: niusy@onet.pl NNTP-Posting-Date: Mon, 5 Jul 2010 10:38:33 +0000 (UTC) X-Mailer: http://niusy.onet.pl X-Forwarded-For: 83.23.129.13, 10.174.28.53 X-User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit