7 octobre : La journée internationale du BitVector32

Vous ne le saviez peut-être pas déjà. Le 7 octobre est la journée internationale du BitVector32 chez les développeurs .NET.

Il se peut, qu’à la lecture de cette dernière phrase, vous vous demandez les deux choses suivantes :

  • BitVector32, c’est quoi ça?!
  • Une journée internationale dédiée à une fonctionnalité obscure du Framework .NET?

Je tiens à vous rassurer. Il est normal de se poser ces deux questions car cette journée internationale est une invention de toute pièce de mon ami Cédric Sarrazin et moi-même. Il est à mentionner que rien de cela ne serait arrivé sans ma fixation envers certaines fonctionnalités du Framework .NET. On se souvient de l’hommage à String.IsNullOrEmpty, mon  billet dédié à ce héros obscur de .NET.

L’histoire vient de l’époque à laquelle Cédric a complété la certification MCTS-70-536 : Microsoft .NET Framework – Application Development Foundation. Cet examen vise à tester les connaissances sur les fondations au cœur du Framework .NET.

Alors, en cours d’examen, il a été confronté à une question qui testait ses connaissances face à cette fonctionnalité.

Inutile de mentionner que le niveau de confiance face à l’exactitude de sa réponse était très bas. Néanmoins, cela n’a pas empêché mon camarade d’obtenir les points nécessaires pour obtenir la note de passage pour cette certification.

Plus tard, lors d’une conversation au sujet de sa certification, le sujet prend un virage portant à la dérision la classe BitVector32. La raison étant de se souvenir s’il y avait, à notre connaissance, eu un besoin tellement spécifique de performance où nous nous serions demandé si une structure de données me permettant de garder très efficacement mes données sur 32 bits de mémoire.

Moi? Cela ne m’est jamais arrivé. Je peux deviner que ce n’est probablement pas arrivé pour vous non plus.

Pour répondre à la question initiale, je vais me permettre de citer la documentation, en anglais, du MSDN afin de bien décrire ce que permet d’accomplir BitVector32.

Provides a simple structure that stores Boolean values and small integers in 32 bits of memory.

(…)

BitVector32 is more efficient than BitArray for Boolean values and small integers that are used internally. A BitArray can grow indefinitely as needed, but it has the memory and performance overhead that a class instance requires. In contrast, a BitVector32 uses only 32 bits.

Pour l’essentiel, BitVector32 permet de garder, efficacement, en mémoire des données booléennes et numériques (int) de petite taille. Son avantage est son utilisation de mémoire prévisible sur 32 bits.

L’utilisation limitée de cette structure de données est aussi signifiée par son emplacement dans le namespace du Framework .NET. BitVector32 est situé sous System.Collections.Specialized. Dans les structures qui lui tiennent compagnie, il y a notamment :

  • HybridDictionary : Dictionnaire à deux modes. Dans un cas où le nombre d’éléments est petit, il sera sous la forme d’un ListDictionnary. Sinon, il sera sous la forme d’un Hashtable.
  • ListDictionary : Un dictionnaire utilisant une Linked list comme structure de base.
  • OrderedDictionary : Dictionnaire permettant d’accéder aux éléments de sa collection par la clé ou par son index. Note : Le différencier du dictionnaire SortedDictionary où les éléments sont triés par la clé.
  • StringDictionary : Un hashtable où les clés ainsi que les valeurs sont des strings au lieu d’être des objets.

En plus de tout cela, à titre de conclusion, le camarade Cédric a même poussé l’audace à créer un fond d’écran en l’honneur de BitVector32.

Advertisements

Un avis sur « 7 octobre : La journée internationale du BitVector32 »

  1. […] lecteurs de longue date se souviendront peut-être de mon hommage au BitVector32. Vous n’avez aucun souvenir de cela? Ce n’est pas très grave non plus. Le 7 octobre dernier […]

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l’aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

%d blogueurs aiment ce contenu :