OT bitove polia a efektivita; Was: pointery C

Jan Waclawek konfera na efton.sk
Středa Květen 22 22:30:26 CEST 2013


No, to moze byt jeden z pohladov; nemyslim si vsak, ze by taketo makro malo byt efektivnejsie prelozene ako ekvivalent s bitfieldom. Dufal som, ze pridete prave s takym niecim, ze na nejakej platforme sa s bitmi manipuluje vyslovene neoptimalne - som zatazeny na v praxi nie prilis relevantne benchmarky... ;-)

Prenositelnost... v kazdom pripade treba vediet, co clovek robi. Operacie takehoto typu maju urcite svoje miesto tam, kde je potrebne zabezpecit nejake fyzicke rozlozenie bitov vo vacsich celkoch, to asi ano; ale su miesta, kde sa bitfieldy nepouzivaju kvoli tomuto (ale napriklad prave kvoli setreniu miestom). 

Teraz vyhoda bitfieldov: daju sa s nimi robit "normalne" operacie ako s beznymi celociselnymi premennymi (samozrejme si treba davat pozor a samozrejme sa nedaju robit hokusy-pokusy s pointermi), pouzivat ich ako parametre vo funkciach, atd. S prislusnou davkou opatrnosti sa napriklad da napisat program aj tak, ze sa optimalizuje podla moznosti cielovej platformy - ak je malo RAM, pouziju sa "spakovane" bitfieldy, ak su nakladne operacie na bitoch a je dost RAM, pouzije sa alternativna definicia typu veduca k "normalnym" strukturam.

Takze zase je to len o tom, ze neexistuje univerzalne dobre riesenie a kazda situacia ma ine optimalne riesenie.

Mimochodom, to makro je lepsie napisat takto (co zrejme viete, len ste to v rychlosti odflakli):

#define neco(x)  (((x) >> 3)&0x07)

wek


On Wed, 22 May 2013 22:02:43 +0200
Jaroslav Buchta <jaroslav.buchta at hascomp.cz> wrote:

> Uz jsem to dlouho nepouzival a vlastne ani nepotreboval, tak to berte 
> spis jako namet k diskusi... Ale makro pro prislusnou bitovou operaci 
> vyjde asi nastejno bez komplikaci s prenositelnosti - neco ve stylu 
> #define neco(x)  ((x >> 3)&0x07)
> Dne 22. 5. 2013 22:02, Jan Waclawek napsal(a):
> > A mate na toto myslenie aj nejake konkretne argumenty?
> >
> > wek
> >
> >
> > On Wed, 22 May 2013 21:47:52 +0200
> > Jaroslav Buchta <jaroslav.buchta at hascomp.cz> wrote:
> >
> >> Myslim, ze ta bitova pole jsou neco ve stylu usetrim 1 byte datove
> >> pameti za cenu 20 bytu programove pameti. Proste mi neprijde v soucasne
> >> dobe nejak efektivni to pouzivat...


Další informace o konferenci Hw-list