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

  FORUM HardWare.fr
  Programmation
  C++

  Implementation performante

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Implementation performante

n°286871
yanis97
Posté le 15-01-2003 à 15:25:01  profilanswer
 

Bonjour;
 
Je souhaite réaliser une application en C++ qui va lire des données stockèes ds des fichiers binaires (certaines data sont codèes sur 2 octets en BCD d'autres sur une longueur de plusieurs octets).  
Une fois ces données récupérées, je dois les découper en segments de 32 KO et les envoi via X.25.
 
Question : quelle est la meilleure implémentation pour réaliser ce traitement : lire, récupérer et découper, en sachant que ce traitement est  susceptible de se répéter plusieurs fois (il se peut que j'envoi les data d'un fichier F1, ensuite F2 et ensuite je reviens sur F1, etc...).
 
EN vous remerciant.

mood
Publicité
Posté le 15-01-2003 à 15:25:01  profilanswer
 

n°286955
YungMakko
Posté le 15-01-2003 à 17:03:56  profilanswer
 

Utilise des fichiers mappes en memoire: fonction "mmap" sous UNIX et "CreateFileMapping & MapViewOfFile" sous Windows.
Tu n'as pas a allouer la memoire pour lire le fichier, tout est gerer par le systeme, c'est plus elegant et souvent bcp plus efficace que ce que tu peux faire toi meme.
J'ai implemente rescemment un convertisseur de fichier; il va 2fois plus vite en utilisant des map plutot qu'en lisant le fichier a convertir de maniere "classique". Et en plus, le code est plus simple.


Message édité par YungMakko le 15-01-2003 à 17:21:39

---------------
In tartiflette, we trust!
n°286965
yanis97
Posté le 15-01-2003 à 17:30:15  profilanswer
 

Une fois que j'ai envoyé mes données, si je reçois une autre reqûete qui me demande d'envoyer les mêmes data, comment je fais si je n'ai rien en mémoire (au moins un index) => il faudra refaire tout le traitement ?
 
 
A+;

n°286970
YungMakko
Posté le 15-01-2003 à 17:37:44  profilanswer
 

C'est a toi de voir: Si tu estimes que tu qs peu de donnees a stocker, tu peux te debrouiller pour creer une arborescence de tes donnees en memoire, et les envoyer directement sans traitement si une nouvelle requette se presente.
Mais si ton traitement est tres court (genre moins d'une seconde), ca ne vaut vraiment pas la peine de t'embetter. Ne stocke rien, et refait le traitement a chaque fois.
Si ca dure 10minute a chaque fois, evidemment... faut voir. Mais la, a moins que ton fichier ne fasse 1Go, si le traitement est aussi long, il faut surement revoir ton code!


---------------
In tartiflette, we trust!
n°286990
yanis97
Posté le 15-01-2003 à 17:58:07  profilanswer
 

Les fichiers font 15 Mo max , mais le problème c'est que c'est une application multi-threadée : j'ai +ieurs clients qui vont me demander de transferer des data (dont certains les mêmes).
La taille des fichiers est raisonnable, mais je dois envoyer simultanement à plusieurs clients (100 clients) les données demandées.
 
A+;

n°286996
YungMakko
Posté le 15-01-2003 à 18:07:43  profilanswer
 

yanis97 a écrit :

Les fichiers font 15 Mo max , mais le problème c'est que c'est une application multi-threadée : j'ai +ieurs clients qui vont me demander de transferer des data (dont certains les mêmes).
La taille des fichiers est raisonnable, mais je dois envoyer simultanement à plusieurs clients (100 clients) les données demandées.
 
A+;


 
Solution la plus simple: Chaque thread client map le fichier a lire en lecture. Je pense que ca ne pose pas de probleme.
Et chaque client traite donc les datas de ce fichier a chaque demande. ca devrait fonctionner vu qu'il n'y a pas de probleme d'access concurrents quand on est en lecture (sauf si le fichier est ouvert en "share denied" ).
Optimise bien le code qui va traiter les fichiers. Un fichier de 15Mo doit se lire et se traiter en 1 ou 2sec max sur une machine de puissance moyenne (1Ghz), a moins d'etre oblige de faire une analyse complexe a chaque parti du fichier lu, ce aui n'est pas ton cas il me semble.


Message édité par YungMakko le 15-01-2003 à 18:09:26

---------------
In tartiflette, we trust!

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

  Implementation performante

 

Sujets relatifs
implémentation semaphore POSIX 1.bpagination : méthode la plus performante ?
[C] Implémentation de fonctions et calcul de complexitéImplémentation des beans dans une webapp
implementation de resultsetWin32 => Implementation de liste
implementation de graphes en c++Implementation NAT
Cherche infos sur implémentation DES et AESVisual C : Implémentation d'un List Control
Plus de sujets relatifs à : Implementation performante


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