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

Qt Discussion :

Qt, la bonne solution ?


Sujet :

Qt

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 23
    Points
    23
    Par défaut Qt, la bonne solution ?
    Bonjour,

    J'essaye de créer un programme qui va réagir à chaque modification de fichiers et/ou dossier.

    Mon programme fonctionne presque entièrement, mon problème et que l'application prend énormément de mémoire.

    J'utilise la librairie Qt, et principalement la class QFileSystemWatcher.
    Je récupère la liste de tout les dossiers et je les connecte à un directoryChanged().

    Pour des "petits" dossiers ça va encore, mais le but du programme est d'analyser tout l'ordinateur et uniquement avec un disque de 40G0, j'utilise plus de 350 000K d'espace mémoire.

    Alors sans pousser la réflexion du code, est ce que cela vient d'une mauvaise utilisation de ma part, ou alors Qt n'est pas fait pour gérer de grande quantité? Je suis au courant de la limite de QFileSystemWatcher sous certain système mais ça ne rentre pas en compte dans mon cas.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 902
    Points : 219 982
    Points
    219 982
    Billets dans le blog
    126
    Par défaut
    Bonjour,

    J'ose commencer à croire qu'un hook / réimplémentation en surcouche de fread / fwrite / les commandes Win32 pour le faire serait meilleur mais beaucoup plus compliqué.

    Avez vous besoin d'un support multiplateforme ?

    Et puis la question a se poser, c'est de savoir ce que fait vraiment QFileSystemWatcher (donc voir code source derrière). Car votre problème de mémoire peut aussi venir d'une surveillance excessive du système de fichier.
    Ne peut on pas simplifier en surveillant juste des dossiers parent, et une fois ceux ci activer, surveiller les enfants ?

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Merci pour cette réponse, je n'y avais même pas songé et c'est vrai que ça me parait être intéressant.

    Dans l'idéal, il me faudrait un support multiplateforme.

    Mais c'est vrai que je récupère tout les dossiers. Je boucle sur absolument tout les fichiers lors du premier repérage donc je me retrouve avec des montages de dossiers. Ma surveillance est trop importante.

    Je vais mettre en pratique la solution donnée.

    Donc, le problème viendrait plutôt de mon code, que de Qt? D'un point de vue général?

  4. #4
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 902
    Points : 219 982
    Points
    219 982
    Billets dans le blog
    126
    Par défaut
    Citation Envoyé par Bloorp Voir le message
    Donc, le problème viendrait plutôt de mon code, que de Qt? D'un point de vue général?
    D'abord,m on ameliore notre code. Apres, lors des differentes experimentations, si on se rend compte que Qt a un bug, on peut commencer a enqueter et rapporter le bug. Mais on ne doute jamais du code de la bibliotheque que l'on utilise en premier lieu.
    Donc, cela vient de votre code. (Desole).

    Maintenant, votre methode actuelle est super lourde. Je ne pense pas qu; il y ai mille techniques pour les gars de Qt pour surveiller l'utilisation des dossiers efficacement (et en plus multiplateforme). Donc pour le moment, je dois dire que vous devez compter sur la bibliotheques et chercher a faire en sorte d'alleger l'exploitation du QFileSystemWatcher.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Oui, je ne doutais pas de la capacité de la librairie mais je doutais de son utilisation dans un cas comme celui-ci. Je cherchais à ne pas m'égarer vers un "mauvais" chemin.

    Je me doutais bien que cela venais de moi, alors je m'attelle à la tâche d'améliorer ça.

    En tout cas merci pour votre aide.

  6. #6
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 902
    Points : 219 982
    Points
    219 982
    Billets dans le blog
    126
    Par défaut
    Je viens de me décider a lire la doc.
    Deja:
    Note: The act of monitoring files and directories for modifications consumes system resources. This implies there is a limit to the number of files and directories your process can monitor simultaneously. On Mac OS X 10.4 and all BSD variants, for example, an open file descriptor is required for each monitored file. Some system limits the number of open file descriptors to 256 by default. This means that addPath() and addPaths() will fail if your process tries to add more than 256 files or directories to the file system monitor. Also note that your process may have other file descriptors open in addition to the ones for files being monitored, and these other open descriptors also count in the total. Mac OS X 10.5 and up use a different backend and do not suffer from this issue.
    Donc il y a bien des limites et cela coute assez cher d'utiliser une telle classe.

    Maintenant, peut etre que votre utilisation de la memoire viendrai aussi de la liste de chemin vers les fichiers que vous voulez suggerer. Notamment si vous avez une liste de QString repertoriant tout les fichiers. Chose imaginer que cette liste est immense 50000 fichiers, que les chemins ont plus ou moins 50 caracteres. Ce qui ferai, dans une theorie absurde, juste 2.5Mo (si un caractere est code sur 1 byte). Donc peut etre qu'il y a un impact a cause de cette liste.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Oui, également de mon côté, je me retrouve face à un problème, car l'idée est plus qu'intéressante de de ne s'occuper que des dossiers parents, mais seul le dossier parent du nouveau fichier créer peut réagir, il me faut donc tout les dossiers pour être apte à réagir quelques soit la position de ce nouveau fichier.

    Étant étudiant en deuxième année, je n'ai pas beaucoup de ressources et commence à désespérer...

    Soit je parviens à un résultat mais si je compte faire une analyse complète, il ne faut pas que j'espère faire grand chose à côté, soit je ne parviens pas au résultat idéal...

    Enfin merci de votre aide.

  8. #8
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 902
    Points : 219 982
    Points
    219 982
    Billets dans le blog
    126
    Par défaut
    Si c'est un projet de recherche on peut tres bien conclure sur:

    Oui on peut surveiller tout les fichiers, mais cela demande des ressources considerable vu le nombre de fichier ... (des trucs du genre)

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Malheureusement ce n'est pas un projet de recherche, c'est un logiciel pour une entreprise...

    Mais bon d'autres logiciels de ce type existe alors tôt ou tard je vais bien finir par trouver une solution.

    Cette fois-ci, merci pour votre soutien

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2005
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 23
    Points : 23
    Points
    23
    Par défaut
    Si ce n'est pas indiscret, que cherches-tu as faire?

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Je cherche à sauvegarder les fichiers qui vont être modifiés (modifier, créer, etc...) sur mon ordinateur.

    J'ai peut-être la bonne analyse pour résoudre le problème mais donc je comptais utiliser QFileSystemWatcher, pour pouvoir agir à ces changements et pouvoir sauvegarder les fichiers quelques soit leur place dans le système.

Discussions similaires

  1. Bonne Solution ?
    Par figatelliSTI dans le forum MVC
    Réponses: 5
    Dernier message: 19/03/2008, 15h31
  2. SPRING+STRUTS+HIBERNATE. Une bonne solution ?
    Par ollivier dans le forum Struts 1
    Réponses: 9
    Dernier message: 10/04/2006, 13h16
  3. [JAR]Bonne solution ?
    Par Baptiste Wicht dans le forum Eclipse Java
    Réponses: 10
    Dernier message: 30/01/2006, 13h08
  4. [Algnement dans StringGrid] Voici la Bonne Solution
    Par touhami dans le forum Composants VCL
    Réponses: 1
    Dernier message: 07/11/2005, 13h35
  5. [Débutant] Bonne solution ?
    Par Machjaghjolu dans le forum Débuter
    Réponses: 23
    Dernier message: 17/09/2004, 09h51

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