[LUGOS] Hitrost in RAM
Metod Kozelj
metod.kozelj at lugos.si
Wed Apr 7 13:11:26 CEST 2004
Howdy!
>> To ti seveda pove nekaj le o statičnih spremenljivkah. Imam program:
>>
>> $ size statpcap
>> text data bss dec hex filename
>> 25800 372 164 26336 66e0 statpcap
>>
>> Bi človek rekel ... tiny. Ampak zna porabiti tudi 500MB pomnilnika in
>> več. Ker pač dela z malloc() - free().
>>
> Seveda, odvisno od uporabe. Nima smisla vsakič znova dodeljevati
> pomnilnika
> matriki ob vsakem klicu podprograma, še posebej, če se to velikokrat
> ponovi.
>
> Si kdaj pogledal, za koliko je tvoj program počasnejši od statičnega?
V bistvu moj program sploh nima veze z matrikami, uporabil sem ga le kot
ilustracijo, kako zavajajoč je lahko zgornji izpis. Glede na to, da moj
program med svojim delom prebere kakšnih 1-2GB podatkov (kakor kdaj)
drugače kot dinamično ne more alocirati pomnilnika ...
Sicer pa bi bila morda pohitritev pri uporabi statičnih matrik
dosegljiva le v primeru, da bi med tekom programa velikokrat alociral in
dealociral identične kose pomnilnika. Če namesto deklaracije recimo
float matrika[6000][6000];
uporabiš
float *matrika;
...
matrika=malloc(sizeof(*matrika)*6000*6000);
je to na koncu isti pakeljc, čas porabiš pač med malloc() namesto ob
zagonu programa.
--
Peace!
Mkx
---- perl -e 'print $i=pack(c5,(41*2),sqrt(7056),(unpack(c,H)-2),oct(115),10);'
---- echo 16i[q]sa[ln0=aln100%Pln100/snlbx]sbA0D4D465452snlb xq | dc
More information about the lugos-list
mailing list