🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.pascal
Article #93048

Re: DynamicArray kontra StaticArray

#93048
From: webmajsterek
Date: Mon, 05 Jul 2010 10:38
86 lines
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.pl
References: <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