begin process at 2010 02 10 01:20:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Algorithme

 > 

Maths

 > 

accélérer la lecture / écriture dans un fichier


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

accélérer la lecture / écriture dans un fichier

samedi 21 février 2009 à 18:01:18 | accélérer la lecture / écriture dans un fichier

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 processus de lecture*/écriture dans ce fichier, voici ma fonction de lecteur est est définie inline et pourtant le temps d'exection est tres long,


inline    void GetidRegion(vecteur *a,int nb,Region *reg)
{
    int n;
   
    int cp=0;
    ifstream Al;
    Al.open(fichregion,ios::in|ios::binary);
    if(!Al){cout<<"error opening fichier";exit(0);}
    else
        while ((Al.read((char*)reg,sizeof(Region))))
        {
          
         
           cp++;
       
            
        }
     Al.close();
}

merci pour toute suggestion

samedi 21 février 2009 à 19:54:03 | Re : accélérer la lecture / écriture dans un fichier

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Il faudrait essayer de ne pas ouvrir le fichier à chaque fois ! Une ouverture de fichier, c'est très long sous Windows et relativement long sous Linux (Les droits sont plus complexes sous Windows).

Ensuite, il faut voir la taille de tes "régions"... Si tu lis octet par octet tu as pas fini.

Faut essayer de lire des bloques de 4ko ou plus, de les garder en mémoire, et de lire dedans les parties qui t'intéressent.

A quoi te servent ton vecteur a et ton cp ??
samedi 21 février 2009 à 21:53:23 | Re : accélérer la lecture / écriture dans un fichier

gamemonde

Membre Club
utiliser les fonctions windows ou  fopen au lieu d'utiliser ifstream sera aussi plus rapide
jeudi 26 février 2009 à 12:12:44 | Re : accélérer la lecture / écriture dans un fichier

infodaoudi

Salut, merci pour vos rèponses, mais je vois pas comment je peux utiliser les fonctionsfopen dans ce cas de fiqure?? je fais comment merci
jeudi 26 février 2009 à 13:38:30 | Re : accélérer la lecture / écriture dans un fichier

rt15

Membre Club Administrateur CodeS-SourceS
En fait, pour ne pas ouvrir le fichier à chaque fois, il faudrait que tu stockes quelque part ton ifstream, ton FILE* ou encore ton handle de fichier Win32. Et tu réutilises ça au lieu de faire un constructeur de ifstream, un fopen, un CreateFile à chaque appel de GetidRegion.

Concernant ton problème, tu as 20 Go de régions ? Tu as donc 20 Go d'une structure sérialisée de taille fixe ?

Si oui, tu as seekg/seek/SetFilePointer qui peut beaucoup t'aider. Si tu avais des structures triées par exemple, tu pourrais faire une recherche dichotomique dans ton fichier. Si tu avais des structures avec des ids qui se suivent (0, 1, 2, 3...) , tu pourrais tomber directement sur la bonne structure. Si tu avais des grosses structures non triées, tu pourrais faire un fichier d'index (id -> position dans le fichier), voir conserver cet index en mémoire.

Quel taille fait un Region ?
Que fait ta fonction ? Renvoyer une fonction à partir de son id ?
Tes structures sont triées ?
...

Détaille plus ton problème.


Cette discussion est classée dans : fichier, lecture, accélérer, écriture, al


Répondre à ce message

Sujets en rapport avec ce message

Lecture/écriture de fichier .INI sous Unix? [ par Samprayoga ] Bonjour à tous,C'est mon premier message sur ce forum, alors je vais essayer d'être clair.J'aimerais savoir s'il existe ou si quelqu'un a déjà impléme lecture écriture dans un fichier formaté [ par borgeomi ] borgeomibonjouuuuuuur !!!!!Vieux programmeur C et COBOLJe voudrais écrire un programme orientée objet qui lit et écrit dans un fichier structuré( Equi Lecture/écriture [ par bethany ] Bonjour à tous,J'essai de résoudre un exercice que nous devons faire pour l'école en C (pas C++).Il s'agit de récupérer un 'double' que l'utilisateur 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 Comment accélérer l'écriture des données sur un fichier [ par 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 tem un probléme avec la lecture de fichier [ par sanae19 ] bonsoir en fait voila j'ai un petit probléme de lecture de fichier en fait ma, methode marche tres bien tout seule mai le probléme c'est qu'elle enreg lecture d'un fichier.INI de N trames en C++ [ par odin13013 ] lecture d'un fichier.INI de N trames   en C++ Bonjour, en bref je fais un programme d'analyse de trame. Dans un fichier.INI je paramétre de la facon s Forcer l'écriture d'un fichier [ par Neo_Fr ] Bonsoir, Je suis en train de faire un lecteur mp3 et j'ai un gros pb ac DShow, apres avoir jouer un mp3, je ne peux plus l'ouvrir CreateFile me retour lecture d'un fichier [ par naddoush ] resalut tout le monde, j'ai un autre truc à faire comment faire pour telecharger le contenu d'un fichier.txt dans une zone text dans mon interface gr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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,390 sec (3)

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