[ LUGOS-PROG ] Vrednosti v tabeli

Andraz Tori andraz.tori1 at guest.arnes.si
Tue Apr 24 18:32:56 CEST 2001


Na 24 Apr 2001 05:52:14 +0200, je Alen Loncaric zapisal:
> Imam primer naprimer
> 
> int tab[100]
> 
> tako je deklarirana tabela in sedaj vprasanje ali je mozno postaviti v vsaki celici v tej tabeli vrednosti na 0 ali na kaksno drugo vrednost ki si jo zmislim. Vse to ce bi slo brez zanke
> 
> Vem da je mozno naprimer uporabit for zanko in ciklat tak dolg dokler niso zafilani vsi prostorcki v tabeli ampak to ni zanimivo in me zanima ce je kaj bolj blizjega?????

memset(tab,0,sizeof(int)*100);

uporabi to funkcijo

Kaj se skriva za tem klicem ne ves zagotovo, v teoriji je pa na x86
zoptimizirana v "rep stosd" instrukcijo in nekaj krame, ali kaksne SIMD
(single instruction, multiple data)-MMX cvetke...
disassemble and see it for yourself...
Na drugih arhitekturah imajo seveda druge resitve, ... zato uporabljaj
memset...


Poleg tega je na nekaterih arhitekturah dobro poskrbeti da imas stvari
poravnane na recimo 2 ali 4 bajte.. itd .;)
V teoriji kadar imas res velike strukture (cez 64k), je morda celo
pametno narediti DMA copy iz praznega predpripravljenega bufferja in
vmes poceti druge kalkulacije, ampak mislim, da so casi taksnih
optimizacij ze za nami... in sploh je to perverzno ..., pa se vprasljivo
je ce se da s tem sploh prihraniti :)

aja, ravnokar sem opazil se bolj specificno funkcijo : bzero, sicer pise
da je depreceated, ampak...

kaj vec zves tudi ce tematiko poisces v googlu:
http://www.azillionmonkeys.com/qed/blockcopy.html
http://www.df.lth.se/~john_e/gems/gem001e.html



Lep Pozdrav
Andraz Tori




More information about the lugos-prog mailing list