Crunchez vos adresses URL
|
Rejoignez notre discord
|
Hébergez vos photos
Page 297 sur 334 PremièrePremière ... 197247287289290291292293294295296297298299300301302303304305307 ... DernièreDernière
Affichage des résultats 8 881 à 8 910 sur 10008
  1. #8881
    OKok merci!
    Dans ce cas je vais plus me rabattre vers "Programmer efficacement en C++. 42 conseils pour mieux maîtriser le C++ 11 et le C++ 14" (2016)

  2. #8882
    C'est la traduction du nouveau Meyers, Effective Modern C++. C'est la suite d'Effective C++, un grand classique. Donc ça doit être très bien.
    Par contre ça ne parle que de ce qui est nouveau dans C++ 11 et 14, et ça n'inclut pas le contenu plus généraliste d'Effective C++, donc c'est assez spécialisé.

    Dans la même veine il y a les bouquins de Herb Sutter, Exceptional C++ et ses dérivés (traduits en français avec des titres à la con). C'est basé sur des études de cas et ça se lit bien.

  3. #8883
    Mouai. Je l'avais acheté le bouquin de Meyers il y a quelques années et c'est effectivement plus ou moins obsolète.
    Rust fanboy

  4. #8884
    Citation Envoyé par leDucDeRien Voir le message
    OKok merci!
    Dans ce cas je vais plus me rabattre vers "Programmer efficacement en C++. 42 conseils pour mieux maîtriser le C++ 11 et le C++ 14" (2016)
    Tres bon bouquin, mais il vaut mieux avoir deja de solides bases en C++, ce n'est pas un bouquin d'apprentissage, mais, comme le dit Mogluglu, plutot une collection de conseils sur comment utiliser certaines des nouveautes de C++1[14].

  5. #8885
    Ah oui okay.
    Ce ne serait pas vraiment ce que je recherche alors. Je souhaiterai précisément me perfectionner (pas spécialement à connaître les nouveautés)

  6. #8886
    Citation Envoyé par leDucDeRien Voir le message
    Ah oui okay.
    Ce ne serait pas vraiment ce que je recherche alors. Je souhaiterai précisément me perfectionner (pas spécialement à connaître les nouveautés)
    Si tu comprends un peu l'anglais :

    - tu peux voir l'index et la table des matieres ici : http://www.amazon.com/Effective-Mode...sap_bc?ie=UTF8
    - tu as aussi un chapitre la : http://cdn.oreillystatic.com/oreilly...95_sampler.pdf

  7. #8887
    Citation Envoyé par newbie06 Voir le message
    Si tu comprends un peu l'anglais :- tu peux voir l'index et la table des matieres ici : http://www.amazon.com/Effective-Mode...sap_bc?ie=UTF8
    - tu as aussi un chapitre la : http://cdn.oreillystatic.com/oreilly...95_sampler.pdf
    J'ai pas fait de C++ depuis mon DUT Info (et c'était pas du C++11) et c'est le language que je vais utiliser pour mon stage de cet été donc je sens que ce livre pourrait bien me servir . (En même temps je sais meme pas si le projet sur lequel je vais bosser est en C++1[14], je vais demander.)


  8. #8888


    J'ai voulu procrastiner quelques minutes à lire de la presse en ligne, et le karma m'a violemment rappelé à l'ordre:
    http://www.slate.fr/story/115723/gee...tion-francaise

    Ce brainwashing de Xavier Niel dans les média n'affecte pas seulement Le Monde...

  9. #8889
    Coucou,

    Je viens avec un probleme simple, un truc de debutant, un peu sale, mais je bloque.

    C'est du C#, mais je suppose en Java ou dans d'autre langages ou les objets sont geres par reference, ca doit etre pareil.

    J'ai un tableau 2D d'objets. Je voudrais copier le tableau ainsi que tous les objets a l'interieur. Le hic c'est que qui dit reference... euh... dit reference. Donc je copie mon tableau, mais comme les cases ne contiennent qu'un pointeur vers le tableau original, si je modifie un objet dans mon nouveau tableau , ca va le modifier dans mon tableau original (ce que je veux eviter). J'ai essaye Clone() et Array.Copy() mais ca ne copie que le tableau. Une idee de comment faire en sorte de copier le tableau ET les objets dedans? (je peux toujours enumere tous les elements du premier tableau avec 2 FOR imbriques et copier tous les objets individuellement dans le second, mais... )

  10. #8890
    Citation Envoyé par Naity Voir le message
    Coucou,

    Je viens avec un probleme simple, un truc de debutant, un peu sale, mais je bloque.

    C'est du C#, mais je suppose en Java ou dans d'autre langages ou les objets sont geres par reference, ca doit etre pareil.

    J'ai un tableau 2D d'objets. Je voudrais copier le tableau ainsi que tous les objets a l'interieur. Le hic c'est que qui dit reference... euh... dit reference. Donc je copie mon tableau, mais comme les cases ne contiennent qu'un pointeur vers le tableau original, si je modifie un objet dans mon nouveau tableau , ca va le modifier dans mon tableau original (ce que je veux eviter). J'ai essaye Clone() et Array.Copy() mais ca ne copie que le tableau. Une idee de comment faire en sorte de copier le tableau ET les objets dedans? (je peux toujours enumere tous les elements du premier tableau avec 2 FOR imbriques et copier tous les objets individuellement dans le second, mais... )
    C'est peut être la solution la plus simple les boucles (et c'est pas déconnant avec des Array)
    Mais le plus simple de manière générale est d'utiliser des List<List<MonObjet>>, ou une classe dérivée de List<>.
    Citation Envoyé par Snakeshit Voir le message
    Mais comme on me l'a appris dans la Marine, plus les choses sont automatisées, moins ça consomme de cases plus vous en avez de libre pour choses utiles, comme penser à des filles dénudées .

  11. #8891
    Merci pour le conseil .

    En quoi utiliser une liste est-il plus simple?

    Dans mon cas, le tableau 2D represente un plan 2D. Du coup MonObjet dans MonTableau[x,y] est "voisin" des instances de MaClasse dans MonTableau[x+1,y], MonTableau[x-1,y], MonTableau[x,y+1], MonTableau[x,y-1]. Le tableau 2D me parraissait plus simple dans ce cas que la List. Mais peut etre que je me trompe, auquel cas je serais ravi de connaitre ton astuce

  12. #8892
    Citation Envoyé par newbie06 Voir le message
    Si tu comprends un peu l'anglais :

    - tu peux voir l'index et la table des matieres ici : http://www.amazon.com/Effective-Mode...sap_bc?ie=UTF8
    - tu as aussi un chapitre la : http://cdn.oreillystatic.com/oreilly...95_sampler.pdf

    Thx!!

  13. #8893
    Plop, bon je reviens vous embêter avec mes histoires d'IHM.

    Je rappelle mon usecase :
    Une interface avec pleins de boiboite dessinées, cliquables, déplaçables etc... dans un canvas qui serait, dans l’idéal, zoomable de façon smooth.
    Jusqu'ici on faisais ça avec GTK et cairo. On peut également envisager QT mais le problème que je décris ci-dessous reste le même.

    Le soucis c'est que, en gros, ça redessine toujours TOUT tout le temps. Dés qu'un event d'affichage est créé, la partie cairo viens redessiner son petit truc vectoriel.
    Ce qui est supra lourd car en vrai les boites ont une image fixes. et ceci pose des problèmes de performances...

    Alors on avais imaginé dessiner dans une image, ce qui est déjà plus performant pour le zoom, mais pas glop lorsqu'on déplace chaque composante de l'image (les boiboites). Du coups, on avais bien imaginé faire autant de widget que de boiboites et chacun contient une image. Bien mais pas glop non plus, la gestion de 1000 widgets par GTk ou QT, c'est pas ça. Puis ça ne résout pas le problème du zoom du canvas car on reviens dans un cas "à la cairo" ou il faut, pour chaque widget, définir de combien il doit être zoomé, où sont les nouvelles coordonnées d'affichage, la taille etc...

    Plus j'analyse le problème plus je me dis que je devrais tout faire en OpenGl. (GTK manageant un unique widget et les events, openGL gérant l'affichage des divers objets) car ça réunis tout les avantages :
    - Zoom smooth facilement du canvas puisque c'est juste la camera qui se déplace.
    - Boiboite qui se déplacent de façon super performantes. (juste les triangles associés à déplacer sur un axe X-Y).

    Seules "soucis" :
    -Ça demande de gérer le mipmaping (en utilisant cairo pour générer les images à partir d'un SVG, par exemple, il est fait pour ça) et surtout ...
    -Ça me pose un problème de compatibilité et de simplicité, GTK c'est super multi archi et tout, c'était bien pratique, OpenGL faut être sur que les types aient la bonne version etc (par exemple à partir de la 3.0 la gestion du mipmaping est simplifié, mais faire des programmes non-jeu impossibles à lancer sur des PC vieux de 5 ans me parait particulier quand même ...)
    - Enfin, ça me laisse avec un caca de gestion d'event puisqu'il faudra quand même que je gère les transformation clic de souris -> environnement et vice-versa. Ce qui est trivial mais moins pratique, néanmoins, que pour la solution widget natif gtk.

    Voila, bref, je sais pas trop trop si c'est une bonne idée dans mon use case, dites moi ce que vous en pensez ...
    D'un coté ça n'a pas l'air trop compliqué pour pas mal d'avantage, après tout ce ne seront que des carrés de deux triangles avec une texture (rgba) par dessus dont on va déplacer les coordonnées sur un plan. Toutes les histoires de zoom et cie pourront se gérer de façon triviale. Ce qui était le principal problème auparavant. Sans parler de la performance d'affichage qui devrais être simplement incalculable dans ce cas là, les moteur 3D avec 100 points à afficher, ça marche plutôt bien actuellement .
    ça résout également tout les problèmes de redéssin, tant qu'il n'y a pas de modif ça reste dans la CG donc c'est opti. Et on peut même imaginer gérer les quelques modif par des shaders.

    Mais après ça reste toujours moins simple que des widgets natifs, et ça me laisse une complexité en plus (quoi que minimale) pour la gestion des events.

    Oila oila, je sais pas trop par quel bout prendre le bidule.

  14. #8894
    Citation Envoyé par Naity Voir le message
    Merci pour le conseil .

    En quoi utiliser une liste est-il plus simple?

    Dans mon cas, le tableau 2D represente un plan 2D. Du coup MonObjet dans MonTableau[x,y] est "voisin" des instances de MaClasse dans MonTableau[x+1,y], MonTableau[x-1,y], MonTableau[x,y+1], MonTableau[x,y-1]. Le tableau 2D me parraissait plus simple dans ce cas que la List. Mais peut etre que je me trompe, auquel cas je serais ravi de connaitre ton astuce
    En java, tu as des méthodes utilitaires pour ça. Check java.util.Arrays#copyOf ou System.arraycopy. je suppose que l'équivalent existe en c#
    Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09

  15. #8895
    Citation Envoyé par Teocali Voir le message
    En java, tu as des méthodes utilitaires pour ça. Check java.util.Arrays#copyOf ou System.arraycopy. je suppose que l'équivalent existe en c#
    Oui, c'est Clone() ou Array.Copy(Array, Array, Length). Mais ils ne copient que le contenu des tableaux, et dans le cas de tableau de classes, dans ta memoire, le tableau ne contient que les pointeurs vers les objets. Du coup tu copies les pointeurs, mais pas les objets.

    J'ai fait ca a la main du coup. J'ai defini ma classe comme clonable (public class MYClass : ICloneable) et j'ai clone mes objets dans le scond tableau (les deux onts de taille fixe et identique connue au moment de la compilation, du coup, pas besoin de les re-copier par la suite).

  16. #8896
    Citation Envoyé par Nilsou Voir le message
    Le soucis c'est que, en gros, ça redessine toujours TOUT tout le temps. Dés qu'un event d'affichage est créé, la partie cairo viens redessiner son petit truc vectoriel.
    Ce qui est supra lourd car en vrai les boites ont une image fixes. et ceci pose des problèmes de performances...
    Je connais pas cairo, mais pas moyen de faire un pre-rendu dont seul l'affichage serait rafraîchi à chaque event ?

    Sinon Qt dipose d'un module OpenGL, qui permet de créer facilement des fenêtres de rendu au sein d'une interface QT ce qui est plutôt pratique.
    Citation Envoyé par Sidus Preclarum Voir le message
    Ben du caramel pas sucré alors...
    "Avant, j'étais dyslexique, masi aujorudh'ui je vasi meiux."

  17. #8897
    Citation Envoyé par Lazyjoe Voir le message
    Je connais pas cairo, mais pas moyen de faire un pre-rendu dont seul l'affichage serait rafraîchi à chaque event ?

    Sinon Qt dipose d'un module OpenGL, qui permet de créer facilement des fenêtres de rendu au sein d'une interface QT ce qui est plutôt pratique.
    Bah en gros c'est comme le dessin dans QT, c'est du vectoriel. Donc le seul pré-rendu qu'on peut faire c'est dessiner une fois pour toute dans une image, par exemple, puis rendre l'image à chaque itération.
    C'est déjà mieux, en effet, mais le soucis vient quand tu manage plusieurs objets "image" dans une grande "image principale", que ce soit QT ou cairo ça te laisse deux choix : - Soit tu pré-rend les images indépendamment mais tu les déplaces les unes par rapport aux autres dans une grande image. Ce qui est bof niveau perfs, tu copies des images tout le temps, même si c'est dans une image finales, tu ne gagne que lorsque les objets ne se déplacent pas, le reste du temps tu dois redessiner. C'est moins crade que la première solution, mais c'est crade. (c'est un peu comme refaire de la SDL sans aucune optim, la SDL d'il y a des années XD)

    - Soit tu les rends une fois pour toutes dans des widgets dédié qui vont eux même se déplacer. Mais là ça devient vite limitant lorsqu'il s'agit d'une centaine de widget et plus... la notion de widget est avant tout faites pour des interfaces standard, c'est pas trop optim pour ce genre de truc, quoique ça vaudrais le coups de tester réellement.

    Donc effectivement, la seule solution que je voyais c'était de rendre des images une fois pour toutes et d'utiliser les mécanismes d'openGL pour déplacer les objets les uns par rapports aux autres, rendre le tout sur l'écran etc... mais ça me laisse le travail de la gestion des event, par exemple, qui va me demander de faire du tracé de rayon pour manipuler mes objets ... et c'est relou. Sans parler du fait que pour faire bien il faudrait mipmaper les textures, tout ça. Bref, pas de solution parfaite en vue ...

    Sinon ouais, GTK comme QT permettent de créer des contextes OpenGL dans leur widget, ça c'est cool

  18. #8898
    Citation Envoyé par Naity Voir le message
    Oui, c'est Clone() ou Array.Copy(Array, Array, Length). Mais ils ne copient que le contenu des tableaux, et dans le cas de tableau de classes, dans ta memoire, le tableau ne contient que les pointeurs vers les objets. Du coup tu copies les pointeurs, mais pas les objets.

    J'ai fait ca a la main du coup. J'ai defini ma classe comme clonable (public class MYClass : ICloneable) et j'ai clone mes objets dans le scond tableau (les deux onts de taille fixe et identique connue au moment de la compilation, du coup, pas besoin de les re-copier par la suite).

    Tu a compris le principe, en fait quand tu clone c'est l'objet lui même qui est cloné, donc s'il contient des pointeurs, ce sont les pointeurs qui vont être copiés et donc référencer les mêmes objets comme tu a pu voir.

    Du coup, quand on veux tout cloner, on doit réimplémenter des choses. Alors soit c'est une classe à toi, dans ce cas, tu la définie Clonable comme tu l'a fait et tu défini quoi créer/copier (et ce, sur tout les niveaux d'objets à cloner).
    Soit ce n'est pas à toi, et alors une extension pourra te permettre de garder les choses propres.

    Si je défini l'extension suivante :
    (ps: en version lisible : http://pastebin.com/8H7tNqgn )

    Code:
    public static class MyExtensions
    {
    	public static List<T> CloneListAndContent<T>(this List<T> list) where T : class
    	{
    		var clonedList = new List<T>();
    		foreach (var element in list)
    			clonedList.Add((T)((ICloneable)element).Clone());
    		return clonedList;
    	}
    }
    Une class bidon comme ca :

    Code:
    public class MyClass : ICloneable
    {
    	public string Data { get; set;}
    
    	public object Clone()
    	{
    		return new MyClass
    		{
    			Data = this.Data
    		};
    	}
    }
    Je peux cloner facilement dans le code comme ca :

    Code:
    void Main()
    {
    	var class1 = new MyClass { Data = "class1" };
    	var list1 = new List<MyClass> { class1 };
    	var list2 = list1.CloneListAndContent();
    	
    	list2.First().Data = "class2";
    	
    	list1.First().Data.Dump();
    	list2.First().Data.Dump();	
    }
    Le "Dump" est une fonction de LINQPad pour voir l'état des objets (outil très pratique pour tester rapidement, n'hésite pas à télécharger la version gratuite), j'obtiens donc l'output suivant :
    class1
    class2

    Si jamais tu a deux niveaux d'objets, tu peut suivre la même logique :

    Code:
    public class MyClass2 : ICloneable
    {
    	public MyClass Data { get; set; }
    
    	public object Clone()
    	{
    		return new MyClass2
    		{
    			Data = this.Data.Clone() as MyClass
    		};
    	}
    }
    (j'ai fait avec des listes car c'est plus pratique en C#, mais l'équivalent est faisable avec des tableaux, de toutes manières pour aller d'un monde à l'autre tu a ToArray() et ToList() donc ce n'est pas très embêtant de travailler avec l'un ou l'autre, donc de préférence reste avec le plus pratique)
    Dernière modification par Dross ; 02/05/2016 à 19h07.

  19. #8899
    Citation Envoyé par Dross Voir le message
    (ps: en version lisible : http://pastebin.com/8H7tNqgn )
    Tu as la balise [CODE][/CODE] (bouton #) si tu veux (au moins pour garder l'indentation).

  20. #8900

  21. #8901
    Ah ben zut.

    J'aurais besoin des lumières des dieux du code. Du compilateur, surtout...

    Je continue de jouer avec les histoires de calculs de normalisation autour de la FFT rapide sur CPU, en utilisant SSE 4.
    J'ai un jeu de classes templates, et je spécialise les méthodes selon les types float et unsigned short int, essentiellement. Dedans, je mets que du code en intrinsics avec un peu d'OpenMP, comme d'habitude.

    C'est la deuxième fois que j'ai une fonction qui s'exécute en 150 ms lorsque je la code en C pur sur un jeu de test. Je recopie le code dans la méthode spécialisée en gros, j'appelle la méthode de la classe et le temps d'exécution passe à 500 ms
    Par acquit de conscience, je recopie dans le fichier ma bonne vieille fonction C comme une fonction non-membre inline, et je fais appeller cette fonction par la méthode spécialisée, qui pour le coup ne fait plus rien si ce n'est des vérifications (allocations bien faites, tailles cohérentes, etc).

    Eh ben là ça repasse à 150 ms quand j'appelle la méthode

    Mais enfin.
    Pourquoi tant de haine.
    Pourquoi détester ainsi les classes templates?

    Je prends la peine de le signaler, parce que c'est la deuxième fois que ça me fait le coup sur la même classe. A noter que la majorité des autres méthodes tournent aussi vite que les fonctions C dont elles sont issues.

  22. #8902
    Il a quelle gueule le code assembleur généré ? Tu as fait un diff entre les deux ?

  23. #8903
    Vectra - "J'ai un probleme de perf sur mon code C"
    Mogluglu - "Regarde le code compile"

    ...vous etes vraiment des barbares

  24. #8904
    Non mais là, je suis en fusion. Je dois rédiger ET coder en même temps.
    Et de ce que j'ai vu ce WE, je crois que le problème se reproduit un paquet de fois.

    Ca amène un code synthétique dans un main tout bête à fonctionner deux fois plus vite qu'une méthode template qui appelle grosso-modo le même code

    Je te réponds demain Möglu, là j'ai le routeur en panne et une énième deadline du manuscrit. Pour le moment, j'insère les résultats du code synthétique, mais faudrait bien que je répare le code principal aussi.

    Au moins, ça booste mes perfs à peu de frais comme ça

  25. #8905
    Citation Envoyé par Naity Voir le message
    Vectra - "J'ai un probleme de perf sur mon code C"
    Mogluglu - "Regarde le code compile"

    ...vous etes vraiment des barbares
    Je suis pas le seul à le penser, ça me rassure
    Ce qu'il faut savoir, c'est qu'on ment beaucoup aux minmatars, surtout lorsqu'ils posent des questions du style: "t'es sûr que ça vole, ce truc ?" Cooking Momo, le 30/08/09

  26. #8906
    Citation Envoyé par vectra Voir le message
    Non mais là, je suis en fusion. Je dois rédiger ET coder en même temps.
    Et de ce que j'ai vu ce WE, je crois que le problème se reproduit un paquet de fois.

    Ca amène un code synthétique dans un main tout bête à fonctionner deux fois plus vite qu'une méthode template qui appelle grosso-modo le même code

    Je te réponds demain Möglu, là j'ai le routeur en panne et une énième deadline du manuscrit. Pour le moment, j'insère les résultats du code synthétique, mais faudrait bien que je répare le code principal aussi.

    Au moins, ça booste mes perfs à peu de frais comme ça
    Sans aller jusqu'à décrypter le code assembleur, si compilo intel tu peux lui faire générer des rapports de performance plutôt bien foutus avec l'option -opt-report=n (si n=0 pas de rapport, en augmentant tu obtiendra des rapports de plus en plus détaillés) et différentes options si tu veux un rapport sur un élément spécifique ( -vec-report=n pour la vectorisation ).

    Sinon pour ton bout de code, les données sont allouées au même endroit dans les deux cas ? Ou la version template alloue différemment que la version en dur ?
    Citation Envoyé par Sidus Preclarum Voir le message
    Ben du caramel pas sucré alors...
    "Avant, j'étais dyslexique, masi aujorudh'ui je vasi meiux."

  27. #8907
    Je reviens (dès que je peux) avec un code synthétique qui met le truc en évidence.
    Là, c'est perdu dans du code de prod de mayrde trop confus, faut que je mette ça au propre.

    Je viens de sortir encore un loup d'un autre bout du code, c'est chaud là

  28. #8908
    Citation Envoyé par Naity Voir le message
    Vectra - "J'ai un probleme de perf sur mon code C"
    Mogluglu - "Regarde le code compile"

    ...vous etes vraiment des barbares
    Non mais c'est clairement le plus simple et le plus rapide à faire là. Il veut comprendre ce que fait le compilo sur son code et il a déjà réussi à isoler le problème, avec deux versions qui devraient générer un code quasi-identique mais ne le font apparemment pas.
    Pas besoin d'un profiler ni d'un debugger ni d'ajouter des printf, même pas besoin d'exécuter le code, juste de recompiler deux fichiers source avec -S et faire un diff entre deux fichiers texte.

  29. #8909
    Vu les ordres de grandeur c'est probablement un problème d'inlining qui ne se fait plus, non ?
    C'est assez facile à repérer sur un dump asm.
    Sleeping all day, sitting up all night
    Poncing fags that's all right
    We're on the dole and we're proud of it
    We're ready for 5 More Years

  30. #8910
    Bin justement, la classe template appellante a tous ses membres en inline...

Page 297 sur 334 PremièrePremière ... 197247287289290291292293294295296297298299300301302303304305307 ... DernièreDernière

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •