ZawzietyRobaczek
ZawzietyRobaczek
#programowanie #cpp #programista15k #gamedev Cześć, w jaki sposób stworzyć tablicę elementów mniejszych niż 1 bajt? np. 5 bitów. Chodzi mi tu o optymalizację pamięci. Normalnie zrobił bym sobie tablicę np.:
unsigned char tablica[320*256] i taka tablica zajmie mi 81 920 bajtów..
natomiast elementy które bede przechowywał w tablicy są od 0-31 czyli wystarczy mi 5 bajtów na element i wtedy taka tablica mi zajmie już 51 200 bajtów.. jak wpisywać i odczytywać z takiej tablicy potem? zakłądam ze trzeba stworzyc właśnie tablicę o wielkosci 51 200 bajtów i potem jakoś maskować te elementy..
  • Najlepsze
  • Wszystkie komentarze
Hauleth
@ZawzietyRobaczek: skoro to game dev to bardziej Cię interesuje wydajność niż rozmiar, a używając pól bitowych cache locality trafi szlak. Gdyby były. to 4 bity to pewnie byłoby lepiej, ale przy 5 to słabo widzę.
JakTamCoTam
@ZawzietyRobaczek: bitset?

Ale tak szczerze najpierw szukaj optymalizacji w algorytmach a później w hardwarze.
nargil
@ZawzietyRobaczek: tak, ale vector nie tworzy tablicy booli, tylko tablicę pól bitowych.
M.....A
M.....A
@ZawzietyRobaczek: jeśli nie bawisz się w demoscene to użyj bajtów. Bawiąc sie w maskowanie i bitshifty wyjdziesz wolniej
lionbest
@nargil: wektor bólu — nazwa idealnie oddająca upierdliwość tego ustrojstwa.
xyz333
zibizz1
zibizz1
@ZawzietyRobaczek: nie zajmuj sie pierdołami. Uzyj bajtów
JakTamCoTam
81 920 bajtów..


@ZawzietyRobaczek: to jest mało tak btw ;-) no chyba, że robisz coś embedded i każdy kb jest warty fortune.
nargil
wektor bólu: std::vector https://en.cppreference.com/w/cpp/container/vector_bool
szablon jest wyspecjalizowany i zachowuje się inaczej niż zwykly vector. Referencja na element to obiekt proxy, a pobranie adresu elementu jest niezdefiniowane przez standard i implementacje w kompilatorach są różne.
ZawzietyRobaczek
ZawzietyRobaczek
@MUDAMUDAMUDA: @zibizz1: @Hauleth: no tak myslalem dzieki
ZawzietyRobaczek
ZawzietyRobaczek
@nargil: wielkosc bool-a to jeden bajt nie bit