begin process at 2012 05 29 01:36:53
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Général

 > 

Comment accélérer l'écriture des données sur un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Comment accélérer l'écriture des données sur un fichier

lundi 1 octobre 2007 à 02:45:39 | Comment accélérer l'écriture des données sur un fichier

islem1982

Bonjour tout le monde,

En essayant de programmer efficacement un algorithme de fouille de données, j'ai fait face à un problème majeur, à savoir le temps consommé par l'écriture des données sur un fichier. J'ai remarqué expérimentalement qu'il influence considérablement sur les temps d'exécution de la quasi-totalité des algorithmes de fouille de données (il est connu que ces algos consomment peuvent générer un nombre de résultats exponentiel [o(2^n) dans mon cas]). Ainsi, améliorer les temps consommés par toute implémentation dans l'écriture est d'une importance capitale.

La question est la suivante, y a-t-il des classes en C++ ou des techniques développés qui permettent d'accélérer l'écriture sur disque de données volumineuses?

Merci d'avance.

SIGMA
lundi 1 octobre 2007 à 10:16:39 | Re : Comment accélérer l'écriture des données sur un fichier

DeAtHCrAsH

Je ne sais pas de quelle manière tu écris tes données mais une solution optimale et de bufferiser les données jusqu'à une certaine quantité (ex : 500.000 octets) puis de faire une écriture par bloc en utilisant l'API Win32 (CreateFile, WriteFile, CloseHandle).
Après à toi de détérminer la taille optimale pour ton buffer, en faisant des test successifs sur un cas nominal.

En gros tu mémorises une certaines quantité dans un buffer. Une fois le buffer plein, tu l'ecris d'un bloc dans ton fichier avec WriteFile. Ensuite tu remets ton buffer à zéro, et tu refais la même chose.

Shell
lundi 1 octobre 2007 à 11:50:56 | Re : Comment accélérer l'écriture des données sur un fichier

luhtor

Bien que cela aille de soi, j'espère que tu utilises des fichiers binaires.
mardi 2 octobre 2007 à 03:27:22 | Re : Comment accélérer l'écriture des données sur un fichier

islem1982

Je tiens tout d'abord à vous remercier. L'idée d'utiliser un buffer est excellente mais je crois que techniquement (utiliser des fonctionnalités relatives à windows) soit très contraignant. En effet, utiliser de telles fonctionnalités va nuire à la portabilité de mon programme qui doit être assurée.
Y a-t-il une classe standard ou standarisée qui permet de gérer la bufferisation au sein du C++. Ainsi, je pourrais exécuter mon programme indépendamment du système d'exploitation.

Merci

SIGMA
mardi 2 octobre 2007 à 16:49:25 | Re : Comment accélérer l'écriture des données sur un fichier

luhtor

Faut absolument utiliser un buffer. Aucun besoin des outils windows pour cela.
Il me semble que les outils du C++ (fstream, etc ...) gèrent deja un buffer avant d'écrire sur le disque, mais tu peux toujours le gérer toi meme.
jeudi 4 octobre 2007 à 00:04:16 | Re : Comment accélérer l'écriture des données sur un fichier

islem1982

Pouvez-vous m'indiquer un document ou un tutorial qui me permettra de maîtriser la manipulation de buffers dans les fstreams en C++.

Merci d'avance.

SIGMA
jeudi 4 octobre 2007 à 13:18:53 | Re : Comment accélérer l'écriture des données sur un fichier

luhtor

Pour des tutoriels et exemples, google est ton amis.
Sinon, la doc de référence très utile:
http://www.cplusplus.com/reference/iostream/


Cette discussion est classée dans : fichier, données, temps, accélérer, écriture


Répondre à ce message

Sujets en rapport avec ce message

lecture écriture dans un fichier [ par debutantprog ] bonjourmon pb n'est pas bien original et je cherche toujours parmis les réponses déjà proposés ue solution seulement les différents programmeurs n'uil Prob simplification lors de l'écriture d'un fichier [ par raton ] Salut tout lem onde..Voila... je dois ecrire un certain nombe de données (code barre) dans un fichier texte. Mais tous les codes doivent etre de meme accélérer la lecture / écriture dans un fichier [ par infodaoudi ] Bonjour ,j'ai un programme qui utilise des entrée/sortie lecture écriture dans un fichier de taille très grande 20 go,y-il un moyen pour accélérer le Fichier hexa, creation de BMP [ par mikax31 ] Bonjour à tous, voilà un petit moment que je cherche en vain la réponse à ma question...Mon objectif : à partir d'un fichier binaire contenant les don Problème d'écriture dans une fichier avec VC++ [ par snoopi_19ans ] j'ai développé une petite application avec MFC sur VC++ V6 : **************************** void CTest_Dlg::OnOK() { // TODO: Add extra validation her Récuper un mot dans un fichier [ par thegame88 ] Bonjour à tous,Je suis entrain de développer un pti prog je voudrais que ce prog me permette de récupérer les 16 derniers caractères d'un fichier.Ce f Problème avec type de données et opérateur >> lors de lecture de fichier [ par bny ] Bonjour, j'essaie de décoder un fichier de configuration(txt) j'ai certain problèmes avec les types de données et l'opérateur >> (flux de données).  J Rapidité des systèmes temps réel [ par morpheux74 ] Bonjour,Voila je suis en ce moment sur un projet de traitement d'image qui doit fonctionner avec la meilleure performance possible.Je m'explique:J'ai exploitation de données dans un fichier [ par rama_cont ] Bonjour J'ai besoin d'exploiter des données dans des fichiers txt (ou xls). Dans un code c++, je voudrais ouvrir le fichier de données (ça c bon) puis fichier en C [ par Zworykin ] Bonjour à tous, Voila dans le cadre d'un projet, je dois établir un fichier pour mes données en C. alors je sauvegarde bien tout avec fprintf dans un


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales