[STL] fonctions adaptees a mes besoins ????

fonctions adaptees a mes besoins ???? [STL] - C++ - Programmation

Marsh Posté le 20-01-2003 à 12:43:23    

voila je veux faire une pteit analyseur de fichier logs de realpopup ( un service de messagerie winpopup en LAN)
 
 
les messages font une centaine d'octets, les logs quelques mo
 
 
 
je voulais savoir si c'etait adapte de le faire en c++/stl, a savoir de faire un vector/liste de quelques milliers de messages, chaque message etant une structure ( champ, destinataire, date, contenu, etc....) puis d'utiliser les fonctions de la stl afin re faire des recherches, classements, etc....
 
 
ou si la base de donnee avait d'autres bibliotheaues / langages plus adaptes
 
en gros, je veux savoir dans quelle direction il faut que j'aille


Message édité par farib le 20-01-2003 à 12:43:50
Reply

Marsh Posté le 20-01-2003 à 12:43:23   

Reply

Marsh Posté le 20-01-2003 à 17:24:38    

:ange: :ange:

Reply

Marsh Posté le 20-01-2003 à 17:57:18    

farib a écrit :

voila je veux faire une pteit analyseur de fichier logs de realpopup ( un service de messagerie winpopup en LAN)
 
 
les messages font une centaine d'octets, les logs quelques mo
 
 
 
je voulais savoir si c'etait adapte de le faire en c++/stl, a savoir de faire un vector/liste de quelques milliers de messages, chaque message etant une structure ( champ, destinataire, date, contenu, etc....) puis d'utiliser les fonctions de la stl afin re faire des recherches, classements, etc....
 
 
ou si la base de donnee avait d'autres bibliotheaues / langages plus adaptes
 
en gros, je veux savoir dans quelle direction il faut que j'aille


Le vrai pb se situerait plutôt au niveau de l'allocateur, tu peux faire des collections de n'importe quoi (donc de pointeurs par exemple). Mais tu ne pourras pas créer/détruire des trucs souvent.
 
Mon conseil du jour : si tu ne connais que le C++, fais-le avec des pointeur n'alloue qu'une seule fois chaque objet que tu aura désérialisé des fichiers, partage des pointeurs dessus et tu vireras tout à la fin du programme. Evidement, pour les objets intermédiaires tu devras être plus fin que ça si tu en crées beaucoup au cours de l'analyse. Mais pour les objets contenus dans les logs, fais ça.  
Si tu crées beaucoup d'objets au cours de l'analyse et que la création/destruction ou le coût de la garder en mémoire est inacceptable, passe à un langage où la mémoire est gérée (haskell, caml, java par ex.), les allocateurs tiennent beaucoup mieux la route en général.

Reply

Marsh Posté le 20-01-2003 à 18:25:08    

en fait comment ca se passe : je lis mon fichier de logs, je le met en mémoire, et je lui fais sortir des statistiques
 
 
donc tu me conseilel de faire un vector de pointeurs sur un log plutot qu'un log, voui, ca vaudra mieux
 
 
ensuite, quand a savoir s'il faut que je le garde en mémoire, je ne sais pas exactement. mon programmer tiendra surement la route sur mon xp1700 256 mo :), masi je ne sais pas s'il sera fait d'une maniere appropriée et propre, c'est surtout ca qui me "fais peur"
 
 
en fait, je construit tout en parsant mon fichier de logs, puis uen fois que c'est fini, je lui fais faire des recherches, et je désalloue en quittant la probleme
 
 
le fait est que ce n'est peut etre pas comem ca qu'il faut faire pour faire du traitement de bdd en c++, mais ca je peux pas me prononcer dessus.

Reply

Marsh Posté le 21-01-2003 à 00:34:12    

up  :kaola:

Reply

Marsh Posté le 21-01-2003 à 05:57:11    

farib a écrit :

en fait comment ca se passe : je lis mon fichier de logs, je le met en mémoire, et je lui fais sortir des statistiques
 
 
donc tu me conseilel de faire un vector de pointeurs sur un log plutot qu'un log, voui, ca vaudra mieux
 
 
ensuite, quand a savoir s'il faut que je le garde en mémoire, je ne sais pas exactement. mon programmer tiendra surement la route sur mon xp1700 256 mo :), masi je ne sais pas s'il sera fait d'une maniere appropriée et propre, c'est surtout ca qui me "fais peur"
 
 
en fait, je construit tout en parsant mon fichier de logs, puis uen fois que c'est fini, je lui fais faire des recherches, et je désalloue en quittant la probleme
 
 
le fait est que ce n'est peut etre pas comem ca qu'il faut faire pour faire du traitement de bdd en c++, mais ca je peux pas me prononcer dessus.


 
de toute façon, la désallocation explicite n'est pas adaptée aux problèmes de graphes mutans, qui sont la majorité des application informatique et dans lequel tu es, jusqu'au cou. C'est pourqoui je te propose, si tu peux prouver que la quantité de mémoire allouée au cours du programme est bornée de ne rien désallouer avant la fin. Sinon, prends un langage adapté, comme tu vas probablement faire de la reconnaissance de motifs, je te suggère un langage adapté : Haskell si tu as du temps (pour digérer des paradygmes assez nouvaux, je suppose) et de la curiosité (réécriture de graphes fainéante, je me souviens plus s'il y a partage des variables ou non) si tu veux un langage moins déroutant pour un mec qui utilise de l'impératif (donc que tu as moins de temps), prend O'Caml.

Reply

Marsh Posté le 21-01-2003 à 07:42:50    

nraynaud a écrit :


 
de toute façon, la désallocation explicite n'est pas adaptée aux problèmes de graphes mutans, qui sont la majorité des application informatique et dans lequel tu es, jusqu'au cou. C'est pourqoui je te propose, si tu peux prouver que la quantité de mémoire allouée au cours du programme est bornée de ne rien désallouer avant la fin. Sinon, prends un langage adapté, comme tu vas probablement faire de la reconnaissance de motifs, je te suggère un langage adapté : Haskell si tu as du temps (pour digérer des paradygmes assez nouvaux, je suppose) et de la curiosité (réécriture de graphes fainéante, je me souviens plus s'il y a partage des variables ou non) si tu veux un langage moins déroutant pour un mec qui utilise de l'impératif (donc que tu as moins de temps), prend O'Caml.


 
 
oué, masi la.... je connais le C/C++ et sui capable d'apprender, je connais le caml-light :), masi apprende un tout nouveau langage.... on va s'en tenir au c++ ?

Reply

Marsh Posté le 21-01-2003 à 09:13:54    

farib a écrit :


 
 
oué, masi la.... je connais le C/C++ et sui capable d'apprender, je connais le caml-light :), masi apprende un tout nouveau langage.... on va s'en tenir au c++ ?


 
Nous sommes en démocratie mon gars.
 
Par contre c'est pas la peine de plaider : "chaque langage a son usage" par la suite. Si c'est pour ne pas utiliser caml alors que tu le connais et que donc tu sais qu'il est plus adapté à ta situation.

Reply

Marsh Posté le 21-01-2003 à 11:06:41    

nraynaud a écrit :


 
Nous sommes en démocratie mon gars.
 
Par contre c'est pas la peine de plaider : "chaque langage a son usage" par la suite. Si c'est pour ne pas utiliser caml alors que tu le connais et que donc tu sais qu'il est plus adapté à ta situation.


 
 
nan.
 
j'ai fait du camlight en prepa ( de l'algo )
 
 
mais je pense que le meilleur rappot qualite prix, c'est a dire performance-qualite de programmation-temps d'apprentissage est pour moi de faire mon programme en c++, d'ou mes questions sur le c++/stl.  
 
aussi au fait que je cherche juste a faire un ptit prog de qq ko au max, et que j'en referais pas d'autre dans le style
 
donc je pense pas que cq vailel le coup que je me mette a l'ocaml ( meme si l'inria roulaize)
 
 
enfin c comme ca ke je vois les choses

Reply

Marsh Posté le 22-01-2003 à 15:39:11    

up

Reply

Marsh Posté le 22-01-2003 à 15:39:11   

Reply

Marsh Posté le 23-01-2003 à 03:47:05    

Fais-le en C++ STL conteneur + algorithme, je pense que c'est parfaitement jouable pour quelques mo.
 
Une fois que ça marche, et si la vitesse est un problème, tu peut optimiser:
Mapper le fichier en mémoire (pas standard), et utiliser des types faisant référence aux données plutôt que de les copier.
Pour des données devant être chargées (traduites ?), tu peut utiliser un allocateur pour simplifier l'allocation/libération.
 
Mais je ne les connais pas bien... on verra seulement si c'est nécessaire.


---------------
Bricocheap: Montage de ventilo sur paté de mastic silicone
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed