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

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Auteur Sujet :

petyte question C++ (istringstream, copie, toussa) VS2003 / pubsetbuf

n°1257254
chrisbk
-
Posté le 02-12-2005 à 09:27:53  profilanswer
 

Reprise du message précédent :
c'est amurofl

mood
Publicité
Posté le 02-12-2005 à 09:27:53  profilanswer
 

n°1257255
++fab
victime du syndrome IH
Posté le 02-12-2005 à 09:29:34  profilanswer
 

chrisbk a écrit :

bin ecoute, les dictons tout ca je les connais, et generalement les applique. Je sors pas l'asm sur n'importe quoi ou ne casse pas mon design histoire de gagner deux pouilleme.  
 
Seulement la c'est du pur bon sens : utiliser (meme temporairement) 4 Mo de ram la ou un seul est necessaire a cause de recopie multiple, ca me parait être idiot. Et perdre du temps a faire de l'inutile, ca m'ennuie. Y s'agit pas de tout demolir, il y a juste 3 lignes dans mon paté de code qui me derange et jvoulais voir a améliorer ca.
 
Vala [:dawa]


 
dac, mais l'ennui, c'est que ce ne sont ni les experts, ni meme les connaisseurs en str*buf qui courent les rues :/
Sinon, les stringstream, c'est chouette, c'est pratique. Mais si le profiler (ou l'intuition crisbkienne) dit qu'il y a problème, alors le stringstream en question risque bien de retourner dans ses 22.  [:dawa]

n°1257257
chrisbk
-
Posté le 02-12-2005 à 09:32:51  profilanswer
 

++fab a écrit :

dac, mais l'ennui, c'est que ce ne sont ni les experts, ni meme les connaisseurs en str*buf qui courent les rues :/


 
bin ouais, j'ai fait des recherches google sur le sujet et suis revenu brocouille. C'est penible
 

++fab a écrit :


Sinon, les stringstream, c'est chouette, c'est pratique. Mais si le profiler (ou l'intuition crisbkienne) dit qu'il y a problème, alors le stringstream en question risque bien de retourner dans ses 22.  [:dawa]


 
bof jsais pas, derriere j'ai pas mal de lecture petit morceau par petit morceau, donc soit c'est ca (stringstream) soit c'est des acces a un fichier (certe bufferisé), donc je sais pas trop c'est quoi le mieux. Pour le coup je suis pas trop inquiet sur les perfos de lecture, c'est plus le bete gachis qui me gene. (enfin de toute facon j'en ai besoin, ou alors je reecris mon istream a moi sur cette fonction 'monread' et chui pas super motiv, en fait)
 
 
 

n°1257264
++fab
victime du syndrome IH
Posté le 02-12-2005 à 09:46:46  profilanswer
 

chrisbk a écrit :

bin ouais, j'ai fait des recherches google sur le sujet et suis revenu brocouille. C'est penible


 
J'ai un beau bouquin sur iostreams/locale (A. Langer, K. Kreft), mais les passages sur les str*buf, j'ai du mal à les avaler :/
 

chrisbk a écrit :


bof jsais pas, derriere j'ai pas mal de lecture petit morceau par petit morceau, donc soit c'est ca (stringstream) soit c'est des acces a un fichier (certe bufferisé), donc je sais pas trop c'est quoi le mieux. Pour le coup je suis pas trop inquiet sur les perfos de lecture, c'est plus le bete gachis qui me gene. (enfin de toute facon j'en ai besoin, ou alors je reecris mon istream a moi sur cette fonction 'monread' et chui pas super motiv, en fait)


 
mouais, sinon, quand tu crée ton istringstream, tu utilises un temporaire string, c'est en partie ce qui te gène apparemment. Je ne suis pas convaincu que l'optimiseur n'ai pas l'opportunité de sucrer purement et simplement ce temporaire ... Ce serait déjà ça de gagner.

n°1257276
chrisbk
-
Posté le 02-12-2005 à 10:03:53  profilanswer
 

++fab a écrit :

J'ai un beau bouquin sur iostreams/locale (A. Langer, K. Kreft), mais les passages sur les str*buf, j'ai du mal à les avaler :/


 
[:ddr555] bin de toute facon y'a pas grand chose a faire, le stringbuf a VS a pas l'air de faire grand chose
 

++fab a écrit :


mouais, sinon, quand tu crée ton istringstream, tu utilises un temporaire string, c'est en partie ce qui te gène apparemment. Je ne suis pas convaincu que l'optimiseur n'ai pas l'opportunité de sucrer purement et simplement ce temporaire ... Ce serait déjà ça de gagner.


 
Faudrait aller voir au disasm ce qu'il se passe reelement, et faire du #define pour passer en rd()->pubsetbuf sous GCC histoire de
 
le truc que je sais pas, c'est si un rd()->pubsetbuf()  prends la responsabilité de la desallocation du pointeur qu'on lui file ?
 
 

n°1257754
stiffler
Lâche mon profil putain ! :o
Posté le 02-12-2005 à 19:14:42  profilanswer
 

Je dédie cette chanson à Chrsibk qui n'a pas peur de mettre les mains dans la merde
                         (un proctologue de génie dixit sa soeur)
                      ________________   __________________
                                                \/
               http://www.2m.tv/galerie/large/prime4--studio2m-L5.jpg


Message édité par stiffler le 02-12-2005 à 19:15:01
n°1257788
el muchach​o
Comfortably Numb
Posté le 02-12-2005 à 20:31:57  profilanswer
 

Mékilécon ce chou-fleur  :D  

chrisbk a écrit :


Seulement la c'est du pur bon sens : utiliser (meme temporairement) 4 Mo de ram la ou un seul est necessaire a cause de recopie multiple, ca me parait être idiot. Et perdre du temps a faire de l'inutile, ca m'ennuie. Y s'agit pas de tout demolir, il y a juste 3 lignes dans mon paté de code qui me derange et jvoulais voir a améliorer ca.
 
Vala [:dawa]


Découpe. Ca te fera 15 lignes au lieu de 3, c'est tout. :o Me dis pas que c'est pas à ta portée.


Message édité par el muchacho le 02-12-2005 à 20:35:08

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1257794
++fab
victime du syndrome IH
Posté le 02-12-2005 à 20:43:58  profilanswer
 

chrisbk a écrit :

[:ddr555] bin de toute facon y'a pas grand chose a faire, le stringbuf a VS a pas l'air de faire grand chose


Bon, je viens d'éplucher la norme, pubsetbuf appelle la fonction virtuelle protégé setbuf. les classes dérivant de basic_streambuf doivent overrider cette fonction. basic_filebuf::setbuf a un comportement défini, mais basic_stringbuf::setbuf est implementation defined (sauf que setbuf(0,0) doit etre sans effet). Donc si gcc fait quelquechose, c'est son droit, si VS ne fait rien, c'est son droit aussi.
 

chrisbk a écrit :

Faudrait aller voir au disasm ce qu'il se passe reelement, et faire du #define pour passer en rd()->pubsetbuf sous GCC histoire de


 
pourquoi pas, c'est une façon de gérer l'implementation defined. Mais consulte la documentation de gcc, pour savoir dans quelles version ça marche de la façon qui te convient.
 

chrisbk a écrit :

le truc que je sais pas, c'est si un rd()->pubsetbuf()  prends la responsabilité de la desallocation du pointeur qu'on lui file ?


AHMA non.

Message cité 1 fois
Message édité par ++fab le 02-12-2005 à 20:44:53
n°1257809
chrisbk
-
Posté le 02-12-2005 à 21:12:25  profilanswer
 

++fab a écrit :

Bon, je viens d'éplucher la norme, pubsetbuf appelle la fonction virtuelle protégé setbuf. les classes dérivant de basic_streambuf doivent overrider cette fonction. basic_filebuf::setbuf a un comportement défini, mais basic_stringbuf::setbuf est implementation defined (sauf que setbuf(0,0) doit etre sans effet). Donc si gcc fait quelquechose, c'est son droit, si VS ne fait rien, c'est son droit aussi.


 
[:pingouino] et comment on fait du code portable avec du implementation defined  dans la STL ?
 
 
 
 


 
bon bin alors non, tant pis [:god]

n°1257810
chrisbk
-
Posté le 02-12-2005 à 21:12:52  profilanswer
 

PARCE QUE OUI JESSAYE DE FAIRE DU PROTABLE ET PTAIN CE QUE CAI CHIANT §§§

mood
Publicité
Posté le 02-12-2005 à 21:12:52  profilanswer
 

n°1257814
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-12-2005 à 21:22:45  profilanswer
 

bah, c'est pas chiant le portable !
regarde moi par exemple : tous mes softs sont portables ! ils tournent sous Win 95, Win 98, Win NT, 2000, XP et 2003 :spamafote:


---------------
J'ai un string dans l'array (Paris Hilton)
n°1257815
++fab
victime du syndrome IH
Posté le 02-12-2005 à 21:24:48  profilanswer
 

chrisbk a écrit :

PARCE QUE OUI JESSAYE DE FAIRE DU PROTABLE ET PTAIN CE QUE CAI CHIANT §§§


 
un R en trop ?  [:petrus75]

n°1257818
chrisbk
-
Posté le 02-12-2005 à 21:28:49  profilanswer
 

Harkonnen a écrit :

bah, c'est pas chiant le portable !
regarde moi par exemple : tous mes softs sont portables ! ils tournent sous Win 95, Win 98, Win NT, 2000, XP et 2003 :spamafote:


 
[:pingouino] meme pas, j'ai tout cassé la portabilité w98  
 
jte parlais de portabilité entre compilo, jeune veau, a partir du moment ou tu utilises une hashmap en c++ t'es mal barré
 

++fab a écrit :

un R en trop ?  [:petrus75]


 
non, mal placé, c'est ca le stayle
 

n°1257824
++fab
victime du syndrome IH
Posté le 02-12-2005 à 21:33:26  profilanswer
 

chrisbk a écrit :

[:pingouino] et comment on fait du code portable avec du implementation defined  dans la STL ?


facile, avec des #ifdef dans tout les sens :) Comme c'est le cas quand on veut etre portable vers les vieux compilos, les compilos cassés, les compilos qui fournissent des extensions puantes, etc ...
mais je crois que t'es tombé sur quelquechose de bien exotique. J'aimerais bien connaitre la raison profonde de ce implementation-defined ...

Message cité 1 fois
Message édité par ++fab le 02-12-2005 à 21:45:38
n°1257834
chrisbk
-
Posté le 02-12-2005 à 21:44:27  profilanswer
 

++fab a écrit :

facile, avec des #define dans tout les sens :) Comme c'est le cas quand on veut etre portable vers les vieux compilos, les compilos cassés, les compilos qui fournissent des extensions puantes, etc ...
mais je crois que t'es tombé sur quelquechose de bien exotique. J'aimerais bien connaitre la raison profonde de ce implementation-defined ...


 
ouais m'enfin merde, que les compilos implante le standart mal, ok, bon, genre gcc 2.95 qui aime pas les namespace aliasing sur std ou les guignoleries a VS<7.1, mais que la STL dise "bon, alors pour ce qui se passe c'est vous qui voyez nous on s'en bas les braies', c'est un peu n'imp. Le T de STL devient guignolesque !


Message édité par chrisbk le 02-12-2005 à 21:44:50
n°1257841
++fab
victime du syndrome IH
Posté le 02-12-2005 à 21:59:53  profilanswer
 

pas STL, IOStreams  [:sugoy]  
 
S'il y a ID, c'est qu'il y a surement une bonne raison. J'essayerai de me renseigner, l'explication doit valoir son pesant de cacaouettes, je pense.

n°1257844
chrisbk
-
Posté le 02-12-2005 à 22:01:57  profilanswer
 

ouais bon, IOStream fait partie de la STL
 
bin si tu trouves hesite pas a poster, ca m'interesse aussi

n°1257846
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-12-2005 à 22:03:17  profilanswer
 

bk >> tu noteras que je t'avais filé le pourquoi du comment de ton problème hier, mais que t'en as rien eu à battre [:petrus75]
 
http://forum.hardware.fr/hardwaref [...] m#t1257072


---------------
J'ai un string dans l'array (Paris Hilton)
n°1257848
chrisbk
-
Posté le 02-12-2005 à 22:05:21  profilanswer
 

nan mais comme je t'ai dis, ca c'est pour stream_buf et dans un istringstream c'est pas un stream_buf mais un string_buf, et d'une, et de deux ca explique que dalle sur la difference gcc / vs, donc je te prierais d'aller faire un bonhomme de caca et de laisser les adultes entre eux [:god]

n°1257849
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-12-2005 à 22:08:17  profilanswer
 

chrisbk a écrit :

nan mais comme je t'ai dis, ca c'est pour stream_buf et dans un istringstream c'est pas un stream_buf mais un string_buf, et d'une, et de deux ca explique que dalle sur la difference gcc / vs, donc je te prierais d'aller faire un bonhomme de caca et de laisser les adultes entre eux [:god]


non mais on s'en fout putain, ça te dit bien que le comportement par défaut de setbuf() est de renvoyer this, et que c'est à toi de l'implémenter dans une classe dérivée, soit exactement ce que t'a expliqué ++fab plus haut [:pingouino]
 
edit: surtout que stringbuf hérite de streambuf

Message cité 1 fois
Message édité par Harkonnen le 02-12-2005 à 22:10:26

---------------
J'ai un string dans l'array (Paris Hilton)
n°1257850
++fab
victime du syndrome IH
Posté le 02-12-2005 à 22:11:09  profilanswer
 

chrisbk a écrit :

ouais bon, IOStream fait partie de la STL


SL contient STL + [ IOStreams et Locale ] en gros
 
 

chrisbk a écrit :

bin si tu trouves hesite pas a poster, ca m'interesse aussi


Yep

n°1257852
chrisbk
-
Posté le 02-12-2005 à 22:13:13  profilanswer
 

Harkonnen a écrit :

non mais on s'en fout putain, ça te dit bien que le comportement par défaut de setbuf() est de renvoyer this, et que c'est à toi de l'implémenter dans une classe dérivée, soit exactement ce que t'a expliqué ++fab plus haut [:pingouino]
 
edit: surtout que stringbuf hérite de streambuf


 
mais phoque [:petrus75]
jte parle de std::istringstream, pas d'une obscure classe parent quoi. Faut quand meme pas que j'aille bricoler std::istringstream, tout de meme ?
 
en particulier

Citation :


This is a virtual member function that should be redefined in derived classes to behave as expected setting the array of n characters pointed by s as the new character buffer.


 
bin elle est pas redefined, et donc ca behave pas du tout as espected

Message cité 1 fois
Message édité par chrisbk le 02-12-2005 à 22:13:55
n°1257854
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 02-12-2005 à 22:16:13  profilanswer
 

chrisbk a écrit :


Citation :


This is a virtual member function that should be redefined in derived classes to behave as expected setting the array of n characters pointed by s as the new character buffer.



y'a pas marqué "that must be", mais "that should be" ! la redéfinition n'est pas obligatoire [:skeye]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1257871
chrisbk
-
Posté le 02-12-2005 à 22:51:08  profilanswer
 

nan mais, ok, d'accord, lol
 
et apres ?

n°1257887
el muchach​o
Comfortably Numb
Posté le 02-12-2005 à 23:19:15  profilanswer
 

++fab a écrit :

pas STL, IOStreams  [:sugoy]  
 
S'il y a ID, c'est qu'il y a surement une bonne raison. J'essayerai de me renseigner, l'explication doit valoir son pesant de cacaouettes, je pense.


Comme c'est un accès direct au buffer lui-même, c'est peut-être une histoire d'indiens ou de thread safety.
 
Mais l'interprétation de la norme par la STL de VS me parait un peu extrême, tout de même. Cela voudrait dire qu'elle interdit l'accès au buffer.

Message cité 1 fois
Message édité par el muchacho le 02-12-2005 à 23:28:47

---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
n°1257889
KangOl
Profil : pointeur
Posté le 02-12-2005 à 23:20:42  profilanswer
 

bha merci bk, comme je vois je vais avoir des problèmes lundi moi :D


---------------
Nos estans firs di nosse pitite patreye...
n°1257893
bjone
Insert booze to continue
Posté le 02-12-2005 à 23:35:05  profilanswer
 

chrisbk a écrit :

[:pingouino] meme pas, j'ai tout cassé la portabilité w98  
 
jte parlais de portabilité entre compilo, jeune veau, a partir du moment ou tu utilises une hashmap en c++ t'es mal barré
 
 
 
non, mal placé, c'est ca le stayle


 
[:pingouino] ha merde j'en fous partout pour mes collections de textures & autres ressources [:pingouino]

n°1257898
++fab
victime du syndrome IH
Posté le 02-12-2005 à 23:42:38  profilanswer
 

el muchacho a écrit :

Mais l'interprétation de la norme par la STL de VS me parait un peu extrême, tout de même. Cela voudrait dire qu'elle interdit l'accès au buffer.


 
non, tu y a acces via basic_str*stream<>::rdbuf(). Le fait que basic_streambuf<>::pubsetbuf renvoye en cas de succes 'this' , c'est je crois juste pour tester que la fonction a accompli son devoir, sinon, elle renvoie 0.

n°1257900
chrisbk
-
Posté le 02-12-2005 à 23:46:29  profilanswer
 

bjone a écrit :

[:pingouino] ha merde j'en fous partout pour mes collections de textures & autres ressources [:pingouino]


 
bouge pas
 

Code :
  1. #ifdef __GNUC__
  2. #if (__GNUC__ >= 3)
  3. #include <ext/hash_map>
  4. namespace HashNamespace=__gnu_cxx;
  5. #else
  6. #include <hash_map>
  7. #define HashNamespace std //technique de fou pour contrer l'aliasing deficient a gcc
  8. #endif
  9. #else //#ifdef __GNUC__
  10. #include <hash_map>
  11. #if (_MSC_VER >= 1310) //VS7.1 et mieux
  12. namespace HashNamespace=stdext;
  13. #else
  14. //Truc a definir sinon VS 7.0 aime pas std::hash_map<std::string, T>, merci gamedev
  15. size_t std::hash_compare<std::string>::operator ()(const std::string& val) const
  16. {
  17. size_t keyVal = 0;
  18. for(size_t i = 0, l = val.size(); i < l; ++i)
  19. {
  20.  keyVal += val[i];
  21. }
  22. ldiv_t div = ldiv((long)keyVal, 127773);
  23. div.rem = 16807 * div.rem - 2836 * div.quot;
  24. if(div.rem < 0)
  25. {
  26.  div.rem += 2147483647;
  27. }
  28. return div.rem;
  29. }
  30. namespace HashNamespace=std;
  31. #endif
  32. #endif


 
vala, t'as plus qu'a utiliser HashNamespace::hash_map [:marc]
 
easy non ?

n°1257901
chrisbk
-
Posté le 02-12-2005 à 23:48:14  profilanswer
 

pour contre je garanti rien pour VS6 et m'en fou copieusement [:pingouino]

n°1257904
bjone
Insert booze to continue
Posté le 03-12-2005 à 00:05:43  profilanswer
 

interressant.
 
squoi le prob avec le hashage de std::string dans VC7, il se chies dessus ?
apparement le 7.1 a pas le problème ?

n°1257905
chrisbk
-
Posté le 03-12-2005 à 00:06:44  profilanswer
 

semblerait (nouveauté du jour, si on en croit les messages du compilo) que std::string n'ai pas la redefinition de l'operateur size_t et donc ne puisse pas etre utiliser directement comme clé de hash_map

n°1257906
bjone
Insert booze to continue
Posté le 03-12-2005 à 00:15:45  profilanswer
 

ha bon.. ye ché pu si je faisais déjà mes hash_map<std::string,T> avec VC7.
 
enfin bon on est au vs 2005, alors qu'ils fassent pas chier ceux qui sont en vc7, et que ceux qui sont en vc6 crèvent... :D

n°1257908
chrisbk
-
Posté le 03-12-2005 à 00:24:20  profilanswer
 

ah bin jte dis ca, vu que tu bosses sur le mighty project gnu gcc libre open source portable ... [:god]

n°1257910
bjone
Insert booze to continue
Posté le 03-12-2005 à 00:27:53  profilanswer
 

le simulateur de steak volant avec possibilitées commerciales entre le cholestérol et le sel marin ?
 
bin oui & non, je mets dispo mon tas de foin, mais pour le moment je suis ma propre ligne marron [:pingouino]

n°1257911
chrisbk
-
Posté le 03-12-2005 à 00:29:20  profilanswer
 

[:petrus75] rude coup, tu veux dire que t'essaye meem pas de compiler quotidiennement ton code sur AIX avec un opengl 1.1 des familles ?

n°1257912
bjone
Insert booze to continue
Posté le 03-12-2005 à 00:31:10  profilanswer
 

bin non ma pauvre dame  [:spamafote]

n°1257913
chrisbk
-
Posté le 03-12-2005 à 00:33:51  profilanswer
 

Ou va le monde [:pingouino]
 
t'as avancé dans ton machin? [:god]

n°1257914
bjone
Insert booze to continue
Posté le 03-12-2005 à 00:37:18  profilanswer
 

visuellement non, mais je débuggues et j'assaini (karcher, sarko tout ça), maintenant ça crashes plus quand j'oublies que j'avais mis de l'antialiasing dans le fichier de config, et qu'un pauvre triste essayes sur sa radeon pas 8000. :D
 
j'ai pas encore commencé de tout refaire le plugin d'export avec IGame, passke là j'en peux plus j'ai plus d'aspirine [:pingouino]

n°1257915
bjone
Insert booze to continue
Posté le 03-12-2005 à 00:40:32  profilanswer
 

et j'ai le taf qui me suce le cerveau avec du code de merde d'il y a 10 ans qui lit des collections de données depuis des fichiers .INI sans fonctions ni structures, sans malloc/free avec du copier-coller partout.... (genre soft à la con qui pour 4 combo prends autant de temps que 3ds pour faire un render sur un objet 30Ktriangles) (et en plus dans des .cpp ou le seul truc++ existant c'est visualstudio qui l'a fait)


Message édité par bjone le 03-12-2005 à 00:41:19
n°1257916
chrisbk
-
Posté le 03-12-2005 à 00:41:39  profilanswer
 

ouais le taf c'est un sacré tue-projet-perso [:pingouino]

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3

Aller à :
Ajouter une réponse
 

Sujets relatifs
question sur switchQUESTION Accéder au Net depuis un intranet depuis VPN ????
Problème de Copie (StreamReader)Mode texte et question sur les socket.
[css] question idiote sur les listes.htaccess Comment protéger sont site contre la copie?
nombre max de copie caché lors d'un envoie de mail.[Résolu] POO question hype débutant
[resolu] Copie de feuilles ...[VBS] afficher l'animation de copie de fichier - [résolu]
Plus de sujets relatifs à : petyte question C++ (istringstream, copie, toussa) VS2003 / pubsetbuf


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