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

MFC Discussion :

vitesse d'écriture sur disque


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 3
    Par défaut vitesse d'écriture sur disque
    Bonjour,
    Je developpe un programme qui doit sauvegarder 1000 images sur DD provenant des caméras JAi à une vitesse de 1000 images/s.
    j'utilise cette fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    void CCamera::StreamCBFunc2(J_tIMAGE_INFO * pAqImageInfo)
    {
     
     
     
        std::cout << index << " " << i << " " << std::endl;
        nbr_missing_packets+=pAqImageInfo->iMissingPackets;
     
     
        if (J_Image_Malloc(pAqImageInfo, &tCnvImageInfo) == J_ST_SUCCESS) {
        if (J_Image_FromRawToImage(pAqImageInfo, &tCnvImageInfo) == J_ST_SUCCESS) {
                std::ostringstream out;
                out << i++;
                std::string sFileName = filename + "\\photo" + out.str() + ".tiff";
     
        if (J_Image_SaveFile(&tCnvImageInfo, LPCTSTR(sFileName.c_str())) == J_ST_SUCCESS) {}
                if (J_Image_Free(&tCnvImageInfo) != J_ST_SUCCESS) {}
            }
        }
    }
    On convertit l'image brute qui se trouve dans pAqImageInfo en format image et on la stocke dans tCnvImageInfo et on la sauvegarde sur le disque. ça marche pour sauvegarder 10 images mais dès que j'enregidtre 1000 images par exemple la vitesse descend à 2 images/s
    c'est la fonction J_Image_SaveFile qui ralentit la vitesse. je l'ai remplacée par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    void CCamera::StreamCBFunc3(J_tIMAGE_INFO * pAqImageInfo)
    {
     
        FILE                *f;
     
     
     
        std::cout <<"cam"<< index << " " << i << " " << std::endl;
        nbr_missing_packets+=pAqImageInfo->iMissingPackets;
     
     
     
        std::ostringstream out;
        out << i++;
        std::string sFileName = filename + "\\photo" + out.str()+ ".jpg";
        f=fopen(sFileName.c_str(),"wb");
        if(f!=NULL)
        {
            fwrite(pAqImageInfo->pImageBuffer,sizeof(uint8_t),sizeof(&pAqImageInfo->pImageBuffer),f);
            fclose(f);
        }
     
        else
            TRACE("pas d'écriture!!\n");
     
     
    }
    mais ça marche pas.
    Aidez moi svp!
    Merci d'avance!

  2. #2
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    Et d'un, , ça pique moins les yeux..

    Ensuite, "ça marche pas" c'est pas très parlant pour nous, ça.
    Ca plante? Si oui à quel endroit? T'as un message d'erreur? Qu'est-ce-que ça donne en debug?

  3. #3
    Membre émérite
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Par défaut
    D'où viennent les fonctions J_Image*()? Quelle taille font tes fichiers d'image?

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    si tu veux de meilleures performances utilise la classe CFile des MFC ou les api32 windows WriteFile etc..
    note : CFile utilise directement les api32...
    en terme de vitesse on a le classement suivant:
    CFile et api32.
    open write/read du C.
    et en dernier la stl...

Discussions similaires

  1. [2005] Lecture écriture sur disque
    Par big1 dans le forum Administration
    Réponses: 3
    Dernier message: 16/10/2014, 16h20
  2. Code trop lent pour une écriture sur disque
    Par Anarchy64 dans le forum C
    Réponses: 6
    Dernier message: 12/12/2013, 19h54
  3. [Strategie] Lecture depuis le réseau et écriture sur disque dur
    Par Amine_sas dans le forum Général Java
    Réponses: 2
    Dernier message: 18/11/2007, 14h23
  4. [UBUNTU] Droit d'écriture sur disque USB
    Par Moi.Meme dans le forum Ubuntu
    Réponses: 2
    Dernier message: 24/03/2007, 03h24
  5. W2003 + IIS : controle de l'écriture sur disque
    Par Pierrot-2007 dans le forum Windows Serveur
    Réponses: 2
    Dernier message: 19/02/2007, 09h23

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