Bonjour,

Je me demandais si vous auriez des solutions performantes en terme de temps d'éxécution pour la lecture d'une suite d'enregistrements de taille fixe.

Comme c'est l'appli qui gènére ces fichiers, il n'y a pas de contrainte particulière sur le format des fichiers (à l'exception de SGBD centralisé sur un serveur qui est impossible en raison de l'utilisation de "caches" sur les postes des utilisateurs , mais on pourrait par exemple utiliser des base de type Access - fichiers mdb).

Nous avons pour l'instant essayé 2 techniques :
  1. enregistrement sous forme de "record" binaires de taille fixe via FileStream et BinaryReader/BinaryWriter sur les variables correspondant aux champs des objets à lire/écrire.
  2. Serialization d'une DataTable.

Ces 2 techniques donnent des résultats assez comparables, à savoir :
lecture de 100 000 enregistrements de longueur 128 en 15 secondes (soit un peu plus de 1 Mo/s).

Ce temps est malheureusement 5 fois plus elevé que celui du même traitement exécuté par un programme Delphi 6 (pas dans un environnement .net) qui fait de la lecture de structure en record.

Pensez-vous qu'utiliser une structure pour l'ensemble des champs de l'objet et la serializer serait avantageux ?

Auriez-vous des idées pour d'autres techniques permettant d'améliorer les performances ?