Bonjour, Voilà mon problème:
je dois faire un tableau de bits avec lecture/écriture la taille du tableau est variable, et la limite haute de taille nes pas spécialement définie, mais disons 1000000 pour l'exemple....
du coup le fais une allocation du style:
pour les fonctions de lecture/écriture
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 static const unsigned char bits_in_char =8; unsigned char* allocate(unsigned int taille) { return (unsigned char*)malloc(taille/bits_in_char + 1); }
Mon soucis c'est que ces fonctions (surtout la lecture) sont appelée un très grand nombre de fois. Et je constate que c'est lent!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 bool get_bit(unsigned char* tab,unsigned int index){ unsigned int kn,in; kn=(index+bits_in_char-1)/bits_in_char; in=(index-1)%bits_in_char; return (1 & (tab[kn] >> in)); } void set_bit(unsigned char* tab,unsigned int index,bool val){ unsigned int kn,in; kn=(index+bits_in_char-1)/bits_in_char; in=(index-1)%bits_in_char; if (val) tab[kn]= tab[kn] | (1 << in); else tab[kn]= tab[kn] & ~(1 << in); }
Est-ce qu'il y a un meilleur moyen de définir/lire/écrire un tableau de bits?
Partager