IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage C++ Discussion :

[Fichier] optimisation à l'ouverture


Sujet :

Langage C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Par défaut [Fichier] optimisation à l'ouverture
    Bonjour,
    Dans un programme que je suis amené à développer je dois passer par de gestion de fichier et je dois donc ouvrir et fermer des fichier un très grand nombre de fois(~1'000'000). Afin d'économiser du temps je souhaiterais optimiser ces traitements et connaitre les moyens les plus rapides de gérer les fichier.
    Actuellement j'utilise les fonction du c fopen et autres. je souhaiterais donc savoir si utiliser les flux avec ifstream ou ofstream me ferait gagner du temps ou si il existe une méthode plus rapide pour les gérer.
    Merci de votre aide.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Quel OS ?

    D'une manière générale la manipulation de fichiers est du ressort du système. À priori, quelle que soit la méthode utilisée, ça reviendra toujours à faire un appel système - c'est ça qui prend du temps.

    Donc tant que t'auras à ouvrir/fermer sans arrêt ces fichiers, il y a peu de chances que ça change en utilisant les flux...Tu dois vraiment travailler sur beaucoup de fichiers ou c'est simplement que l'ouverture/fermeture est mal placée (genre à l'intérieur de boucles) ?

  3. #3
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Que veux-tu faire :

    1 - ouvrir et fermer un même fichier plusieurs fois
    2 - ouvrir et fermer un par un plusieurs fichiers
    3 - les deux

    Dans tous les cas, dis-nous ce que tu cherches exactement à faire, peut-être que d'autres solutions existent sans que tu en soupçonnes l'existence. A part ça, les flux C++ ne sont pas plus rapides que ceux du C. Si tu veux vraiment gagner en vitesse, il faudra utiliser les fonctions de bas niveau de ton système (CreateFile & co. sous Windows, creat & co. sous linux, etc.) à la place des fonctions de haut niveau de ton langage (fopen & co. en C, iostreams en C++, etc.), mais ce n'est pas évident.

  4. #4
    Membre Expert
    Avatar de white_tentacle
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    1 505
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 1 505
    Par défaut
    Je n’ai plus l’habitude des fonctions du c, mais fopen et consorts ne sont pas bufferisés, alors que les iostreams le sont, non ?

    Dans ce cas ça peut faire la différence (pour une utilisation « naïve » de ces méthodes).

  5. #5
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    Ils sont tous les deux par défaut bufferisés. Le mode de bufferisation peut être modifié à l'aide de la fonction setvbuf en C et ios::rdbuf et/ou streambuf::pubsetbuf en C++.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2011
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 39
    Par défaut
    Merci pour vos réponses j'ai effectivement réussi a fortement diminuer le nombre d'ouverture de fichier en ouvrant mes fichier au debut du programme puis en le faisant passer en paramètre entre mes différentes méthodes ce qui permet à mon programme de s'exécuter en un temps beaucoup moins important.
    Si il n'y a aucune méthode qui aille plus vite qu'un simple fopen je pense que le sujet est clos.

  7. #7
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2011
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 618
    Par défaut
    Salut,

    Il me semble que sous unix, utiliser open et des file descriptor est plus rapide que fopen et les FILE*. Dans un petit utilitaire de lecture/écriture d'un fichier dans un pipe, les perf avaient beaucoup augmentées rien qu'en remplaçant les fopen par des open...
    Par contre, comparé au stream C++ je ne sais pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. redirection de fichier et optimisation d'ouverture de session
    Par corwin44 dans le forum Windows Serveur
    Réponses: 1
    Dernier message: 10/10/2010, 20h48
  2. lire un fichier dès l'ouverture de mon editeur
    Par timboy11 dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 30/06/2008, 20h28
  3. Ouverture fichier et double ouverture
    Par guiguikawa dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 30/03/2007, 11h57
  4. Système de fichier (optimisation stockage)
    Par Mr Gumby dans le forum Administration système
    Réponses: 15
    Dernier message: 31/03/2006, 14h46
  5. Ecriture sur un fichier Word: Pb Ouverture
    Par drinkmilk dans le forum ASP
    Réponses: 2
    Dernier message: 11/06/2004, 09h48

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo