OT bitove polia a efektivita; Was: pointery C

Michal Gregor a2x1nptda8 na email.cz
Středa Květen 22 22:43:11 CEST 2013


Proc vlasne C nepouziva promennou typu bit? V dobe vzniku bylo prece pameti 
strasne malo.

Michal Gregor

-----Původní zpráva----- 
From: Jan Waclawek
Sent: Wednesday, May 22, 2013 10:30 PM
To: HW-news
Subject: Re: OT bitove polia a efektivita; Was: pointery C

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 na 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 na 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...
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list na list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list 



Další informace o konferenci Hw-list