Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Next Informatik Xperience

Informatique, technologie et développement
.: Blog d'un MSP :.

Astuce : Sérializer un tableau d'object, quel type de tableau choisir?

Comme celà fait quelques temps que je n'ai pas posté sur le développement je vais vous faire part ici d'une petite étude que je viens de faire concernant la sérialisation binaire de tableaux d'object.

Tout d'abord de quoi parle-ton?

Imaginer dans une application que vous ayez besoin de stocker des données de types trés variés (ou inconnu au moment de la conception : dans une library par exemple). Vous avez la possibilité d'utilisé principalement trois types :

  • List<object>
  • ArrayList
  • object[]

Les deux premiers ayant l'avantage d'être dynamique (il est possible de rajouter/enlever des éléments à souhaits)

Mettons maintenant que pour une raison x ou y, vous aillez besoin de sérializer binairement votre tableau. Je pense qu'un des facteurs de choix pourra alors être la taille de l'objet une fois sérialisé. Notamment si celui-ci doit être transmit par le réseau par exemple.

J'ai donc réalisé un petit bench pour mesurer la taille prise par des tableaux de dimensions identique (et contenant les mêmes données).

Voici le tableau récapitulatif (données affichées en octets) :

  4 els. 16 els. 64 els. 256 els. 1024 els. 2048 els.
List<object> 236 524 932 2564 9092 17796
ArrayList 137 425 833 2465 8993 17696
object[] 59 347 755 2387 8915 17619

 

On peut donc noter que :

List<object> prend 99 octets de plus que ArrayList, ArrayList prend 78 octets de plus que object[]. Et enfin List<object> prend 177 octets de plus que  object[].

Bien entendu ce facteur n'est pas le seul à prendre en compte de la cadre de la conception d'un logiciel. Il faut aussi tenir compte des coûts en temps pour le traitement et l'utilisation des différents types en fonction de leurs contraintes.

Sur ce, Happy Coding!

Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :
Posted: jeudi 13 décembre 2007 08:00 par wizad
Classé sous : ,

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- Sortie de Silverlight 2 et de Flash player 10 par Nix's Blog le il y a 15 heures et 45 minutes

- Installation Silverlight RC0 et final ... par #Rui le il y a 16 heures et 37 minutes

- TCB : Que faire en salle blanche ? par The Mit's Blog le il y a 17 heures et 6 minutes

- Debug : Make Object ID - Comment connaitre l'état d'une variable lorsque celle-ci n'est pas accessible dans le scope courant par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-14-2008, 21:42

- IIS7 : Configuration des handlers pour l'upload de fichier - interdire certains fichiers de s'exécuter | accéder à des fichiers .cs, .aspx par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-14-2008, 19:49

- Microsoft annonce le nom commercial de Windows 7 par Code is poetry le 10-14-2008, 12:07

- [Silverlight] Téléchargez la version finale (et les outils associés) dès maintenant ! par Thomas Lebrun le 10-14-2008, 10:37

- Vilain bug avec IQueryable et la syntaxe yield : System.BadImageFormatException "An attempt was made to load a program with an incorrect format. (Exce... par Matthieu MEZIL le 10-14-2008, 07:48

- SQL Server 2008 : Un livre en cours de préparation ! par SQL Server vu par Christian Robert le 10-13-2008, 22:56

- IIS7 : à quel pool d'application correspond le processus w3wp.exe par Atteint de JavaScriptite Aiguë [Cyril Durand] le 10-13-2008, 21:59