Bonsoir,
Avant tout, laissez-moi vous expliquer ce en quoi consiste mon humble projet afin de savoir ce que je recherche précisément. Dans le but de m'améliorer en C#, j'ai décidé il y a peu de temps de créer une application de découpage de fichiers (autrement dit, un "splitteur").
Il reçoit en entrée (via une GUI) le fichier à découper ainsi que la taille que devront avoir les paquets résultants. En sortie, on obtient un certain nombre de fichiers découpés à la bonne taille. Évidemment, il est possible de les réassembler à l'aide de cette même application.
Le format de fichier utilisé n'a rien de fantastique : des méta-données utiles au réassemblage suivies du contenu du fichier découpé; les méta-données contenant diverses informations telles que le hash MD5 du fichier d'origine (à des fins de contrôle d'intégrité), le nom du fichier original (stocké en Unicode) et d'autres informations du même acabit...
L'application fonctionne bien et fait son travail comme il se doit. Le problème est que j'ai maintenant envie de l'optimiser quelque peu.
Tout d'abord, l'écriture et la lecture des fichiers sont relativement lentes. Quelles sont les optimisations possibles à ce niveau ? Personnellement, j'ai utilisé des FileStream et des BinaryReader/BinaryWriter pour les manipuler. Est-ce que définir un buffer plus grand que celui par défaut (lors de l'initialisation) change radicalement la donne ?
J'ai aussi entendu parlé des fichiers mappés en mémoire. Peuvent-ils m'être utiles dans ce cas précis, sachant que les fichiers peuvent être petits comme immenses (plusieurs Go).
Une autre question est de savoir de quelle manière puis-je implémenter une fonction de création d'archive SFX (auto-extractible) ? J'imagine qu'il faille embarquer du code pré-compilé qui enroberait le binaire du fichier à extraire, si vous me comprenez...
Merci beaucoup pour votre aide que j'espère déjà être très enrichissante
Volgaan
Partager