Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1226 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Win32 console application plus rapide qu'une application Windows

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Win32 console application plus rapide qu'une application Windows

n°481111
gladiator
Posté le 08-08-2003 à 15:07:17  profilanswer
 

Salut,
 
J'ai besoin de faire de la capture vidéo temps réel. Je travaille sous Windows 2000. Je dois écrire des images de 655Ko 25 fois par seconde. Cela me donne un débit d'écriture sur le disque d'environ 16Mo/s. Mon disque SCSI supporte largement cette vitesse d'écriture.  
J'ai, dans un premier temps, mis au point mon application dans une console WIN32, j'écris sur le disque avec la fonction putc(), bien plus rapide que fwrite() (J'ai fait des tests). Cela fonctionne parfaitement, toutes les images sont écrites sur le disque, la led clignote calmement, pas de problème.
J'ai ensuite porté mon application sous Windows avec la librairie graphique ILOG (peut importe la librairie utilisée, le problème est identique avec les MFCs). Et là impossible d'écrire avec ce débit, le disque s'emballe (led reste allumée), j'arrive à peine capture 25% des images. J'ai essayé d'ajuster le buffer avec setvbuf() sans succès.
Je pense que la gestion des flux est différente, peut être parce que le thread de l'application WINDOWS n'est pas aussi bas niveau qu'une console Win32.
Quelqu'un a-t-il une idée pour résoudre ce problème? Plus généralement, quelqu'un sait-il optimiser l'écrire de données sur un diques SCSI, sous Windows?
Merci d'avance, toutes suggestions est le bien venue.


Message édité par gladiator le 08-08-2003 à 15:10:13
mood
Publicité
Posté le 08-08-2003 à 15:07:17  profilanswer
 

n°481130
LetoII
Le dormeur doit se réveiller
Posté le 08-08-2003 à 15:19:08  profilanswer
 

Si tu veux aller vite travail avec des fichier mapper en mémoir. Et de toute façon c utopique d'écrire directement sur le disque dans un environement multi process.
Stocke les donnée en mémoire pour absorber les variation de vitesse d'écriture.


---------------
Le Tyran
n°481140
gladiator
Posté le 08-08-2003 à 15:25:47  profilanswer
 

LetoII a écrit :

Si tu veux aller vite travail avec des fichier mapper en mémoir. Et de toute façon c utopique d'écrire directement sur le disque dans un environement multi process.
Stocke les donnée en mémoire pour absorber les variation de vitesse d'écriture.


 
Comment utilise-t-on des fichiers mappés en mémoire? As-tu un exemple? J'utilise du multi-threading (un thread qui capture et un thread qui écrit) pour palier à la variation de vitesse d'écriture, ce n'est donc pas recomandé?
Ton idée d'utiliser des fichiers mappé en mémoire est certainement bonne mais comment cela se fait il que cela fonctionne très bien dans une console WIN32?


Message édité par gladiator le 08-08-2003 à 15:26:14
n°481150
LetoII
Le dormeur doit se réveiller
Posté le 08-08-2003 à 15:32:13  profilanswer
 

gladiator a écrit :


 
Comment utilise-t-on des fichiers mappés en mémoire? As-tu un exemple? J'utilise du multi-threading (un thread qui capture et un thread qui écrit) pour palier à la variation de vitesse d'écriture, ce n'est donc pas recomandé?
Ton idée d'utiliser des fichiers mappé en mémoire est certainement bonne mais comment cela se fait il que cela fonctionne très bien dans une console WIN32?


 
Pour les fichiers mappés regarde du côté de CreateFileMapping.
 
Tu peux garder ton architecture multi threadé à mon avis, maintenent faudrait voir comment tu fais coopérer tes thread.


---------------
Le Tyran
n°481161
gladiator
Posté le 08-08-2003 à 15:39:14  profilanswer
 

LetoII a écrit :


 
Pour les fichiers mappés regarde du côté de CreateFileMapping.
 
Tu peux garder ton architecture multi threadé à mon avis, maintenent faudrait voir comment tu fais coopérer tes thread.


 
Le thread d'écriture attend un SetEvent venant du thread de capture (image capturé), puis il écrit l'image sur dans fichier. Pendant ce temps le thread de capture peux capturer l'image suivant.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Win32 console application plus rapide qu'une application Windows

 

Sujets relatifs
les Editeurs pour Windows[Windows] Fonction socket : sendto(...)
[divers] débutant en programmation WINDOWS[Windows] connaître le taux d'UpLoad global actuel
probleme avec les themes de windows :-/ | progressbar & ownerdraw[Windows] recuperer la date sous la forme jj-mm-aaaa
[C] Executer une application à partir d'une autre[C++] threads Win32
[C Windows] Afficher l'IP ou l'hostname de la machineWindows XP et Visual fortran
Plus de sujets relatifs à : Win32 console application plus rapide qu'une application Windows


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR