[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