Questions aux programmeurs professionnels (WIndows)

Sujets variés concernant le développement en PureBasic
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Questions aux programmeurs professionnels (WIndows)

Message par Anonyme2 »

Il y a sur ce forum des codeurs professionnels ou de formation programmeur.

A votre avis, lorsque l'on veut travailler sur les données d'un fichier sur disque, il y a plusieurs moyens de le mettre en mémoire.

Voilà 3 façon que je connais mais j'aimerais avoir votre avis sur celle qui est à votre avis la meilleur.

Je ne donne pas de code, c'est plus votre théorie voire votre pratique qui m'intéresse.

1) on charge le fichier en mémoire avec allocatememory et on rempli avec les données du fichier. Pour de petits fichiers c'est je pense pas utile car je pense que ces petits fichiers se trouvent temporairement dans le cache mais pour les gros fichiers, c'est une façon de faire.

2) on utilise les stream qui permettent des opérations de la même manière que sur les fichiers sur le disque.

3) On utilise le mappage des fichiers en mémoire (FilesMapping) avec les API de la série CreateFileMapping_(), l'avantage est la rapidité d'accès aux fichiers et aussi le partage des données entre processus.

Alors, votre avis ?
Avatar de l’utilisateur
djes
Messages : 4252
Inscription : ven. 11/févr./2005 17:34
Localisation : Arras, France

Message par djes »

Tu as oublié de nous dire pour quelle utilisation. Détaille un peu le volume des données (cumulées), la taille moyenne des données transférées, le nombre d'accès. Par exemple, simplement lire un fichier vidéo est différent de faire du montage; une base de données peut nécessiter de petits accès fréquents. De même, en fonction du support (DVD, disque dur, SSD) on peut prévoir des gestions différentes, ou laisser le système faire...
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Les fichiers peuvent être sur n'importe quel support mais je pense que globalement le plus souvent sur le DD.

Il s'agit de lire des données en suivant pour les traiter, par bloc de taille qui varie en fonction du contenu mais sans jamais revenir en arrière. C'est des fichiers ico, icl (NE/PE), exe (NE/PE), dll (NE/PE), OCX.

Les fichiers peuvent faire 1 Ko jusqu'à la taille maxi des exe/dll

Ce qui me fait penser que le mappage est peut-être la meilleure solution.
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Il manque aussi le contexte d'utilisation mais la où je bosse, je suis presque sûr de lire dans les specs qu'il faudra lire les données en streamings avec allocation(sizeof(exe_dll_ocx_...)) et on manipule le buffer pour le traitement.
De toute façon, la solution n'est souvent validée qu'apres avoir fait différents scénarios de tests + tests de perf.
"Qui baise trop bouffe un poil." P. Desproges
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Test la taille des fichiers, et en fonction utilise la méthode qui semble la plus adéquate.
Répondre