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

C++ Discussion :

[CRT]Low-level I/O Temps de réponses open-close


Sujet :

C++

  1. #1
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut [CRT]Low-level I/O Temps de réponses open-close
    Je m'explique,

    j'ai un folder avec des fichiers tiffs que je scanne je fais _open(...) je lis le header, _close(...).

    j'ai environ 8000 fichiers dans mon folder et au bout de 2000 environs, le _open me renvoi -1 cause : "le fichier ne peut être ouvert."
    Sur cette erreur j'ai une message box qui freeze le prog, et c'est là où ça devient chelou....
    En effet, si je clicque tout de suite sur OK, l'erreur réapparait très vite.
    Par contre, si j'attend un peu plus, il est repartis pour 200 - 300 fichiers...

    Donc ma question est la suivante, est-ce qu'il y a un temps de latence à l'ouverture ou la fermeture des handle qui fait que si je fait trop d'open - close il atteint le nombre max de handles ouvrables...

    Si qqun voit pourquoi...
    Qui va piano va sano...

  2. #2
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Au bout de 2048 il plante je suppose...
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_crt__setmaxstdio.asp
    Tu peux pas aller au delà. Réduit le nombre de fichiers ouverts simultanément. Avoit 2000 fichiers ouverts en même temps c'est pas top. De plus d'autres compilos en supportent beaucoup moins.

  3. #3
    Membre éclairé
    Avatar de matazz
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    471
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 471
    Points : 668
    Points
    668
    Par défaut
    je sais,

    mais si tu veut je fais une boucle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    for (;;)
       {
       int Handle = _open(...)
       //lecture header...
       _close(Handle);
       }
    Donc normalement je les ouvrent les uns après les autres...
    mais comme la lecture du header est assez rapide, ej me demandais si il n'y avais pas un temps de latence entre l'appel au close et la destructioin du handle, du même genre que lorsque on stoppe un thread, il ne ce stoppe pas instantanément...
    Qui va piano va sano...

  4. #4
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Normalement _close rend la main quand c'est détruit. Je vois pas comment ça pourrait être autrement.
    Mais je pige mieux ce que tu veux dire, c'est à l'exécution il semble traiter ça par lots. Ben ça c'est Windows en interne, c'est comme quand tu copies un fichier, un coup ça tourne à fond, un coup ça fait une petite pose... Peut être aussi qu'il effectue de la mise en cache puis il te rend la main. Ils font quelle taille tes header ?
    Tu as quel système de fichiers ?

  5. #5
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    tu devrais essayer directement avec les API Windows : CreateFile() et CloseHandle(); peut-être que tu aurais de meilleurs résultats...

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 751
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 751
    Points : 10 670
    Points
    10 670
    Billets dans le blog
    3
    Par défaut
    Je me demande d'ailleurs si le flag FILE_FLAG_NO_BUFFERING aurait ou non un impact.

Discussions similaires

  1. [WD9] Temps de réponse C/S
    Par morgan1810 dans le forum WinDev
    Réponses: 1
    Dernier message: 11/04/2005, 08h58
  2. temps de réponse localhost\réseau: troublant...
    Par Nickytchao dans le forum Décisions SGBD
    Réponses: 5
    Dernier message: 17/01/2005, 08h24
  3. Ressources, temps de réponse, requète ...
    Par _____M_____ dans le forum Administration
    Réponses: 16
    Dernier message: 31/03/2004, 16h12
  4. Temps de réponse : objet TTable (BDE)
    Par lirva dans le forum Bases de données
    Réponses: 5
    Dernier message: 12/12/2003, 00h50
  5. Temps de réponse entre deux sites
    Par coup dur dans le forum Décisions SGBD
    Réponses: 6
    Dernier message: 16/10/2003, 15h26

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