MakeHuman pour MorphOS
-
je vois pas le rapport entre les template et la vitesse du code
Ensuite baeucoup de choses sont normalement « inline » donc pas tant de saut de méthodes qu’on le pense.
Ensuite l’histoire des exceptions y a un proverbe qui dit « ne s’use que si l’on s’en sert », bhein les exceptions c’est en peu pareils : ça ralentit que si l’on s’en sert (i.e. si y en a une de levée)
Mais au final vaut-il mieux un code sûr, réutilisable, avec gestion d’exceptions mais un peu moins lent,
ou un code qui déchire sa mère niveau vitesse, mais qui
1) n’est pas réutilisable et nécessite une réécriture partielle à chaque fois que l’on souhaite l’utiliser,
2) se banane avec un joli crash dès qu’un truc non attendu se présente ?
Moi j’ai choisi : vive le C++ et vive la STL… Après libre à chacun de faire ses choix, perso recoder les méthodes de gestion de pile à chaque projet moi ça me gonfle, j’écris un template de gestion de pile et après je l’utilise dans tous les projets…
EDIT: une petite note : je n’ai jamais dit que les iostream étaient plus rapides que de passer directement par les méthodes système d’accès au fichier. C’est évident que ce sera plus lent puisque leur implémentation se base justement sur elles… C’est comme de dire qu’avec la SDL c’est plus lent que de passer par la graphics.library et Intuition… J’ai juste voulu dire que les iostreams ne sont pas si lents que ce que la rumeur générale tend à le dire.
Pas tout a fait d’accord avec toi alex… en faite c’est plus l’existance du C++ qui me gene.
Ce langage est fait surtout pour faire croire aux gars qui ne sont pas tres « precis » dans leur code qu’ils peuvent faire du code stable et re-utilisable. Mais pour reussir a faire cela qu’a t’on perdu? car on pert forcement qq chose.
La SDL est un wrapper oui, mais il reste en C.
Qui plus est le C++ tant a rendre beaucoup plus complique la lecture du code contrairement a son objectif premier.
Pourquoi? car on ne fait pas un cheval avec un ane!
Quelqu’un ne sachant pas se debrouiller avec du C, n’y arrivera pas plus en C++.
Yomgui:
bon ok, les gouts et les couleurs c’est chacun son truc, c’est comme avec Java, perso je trouve ça dégeu… Mais bon c’est *mon* avis.
Après niveau lisibilté la encore ça dépend des gens, c’est plus une question d’habitude qu’autre chose. Perso l’indentation/mise en forme type FSF je trouve ça super dégueu et j’arrive pas trop à la relire… C’est un peu comme dans les toilettes publiques : si tu passe après un type propre y a pas de problème, si tu passes derrière un gros porc, c’est dur à vivre…
Sinon c’est quoi ton compilo et ta STL (version et tout) parceque là ça compile pas la méthode gets() dans istream ça n’existe pas (il me semble que ça a eu existé mais c’était y a un bail style vers 98/99 avant que la STL soit normalisé et entre dans la norme du C++) et ce aussi bien en cross-compil qu’en compil native cygwin…
Ok, Le template n’influe pas directement sur la vitesse du code (mais sur la vitesse de compilation, alors là, carrément), mais vu que ça fait intervenir un type abstrait, on définit généralement des méthodes génériques pour manier le type en question. Ces méthodes sont bien évidemment une charge supplémentaire à l’exécution.
Sinon, pour l’exemple en question VertexVector, je dirais qu’il vaudrait mieux faire son propre getline en appelant istream::read() sur un « gros » buffer et en traitant les lignes toi-même, au cas où en interne gets() ou getline() auraient la merveilleuse idée de faire de la lecture octet par octet (ce qui ne m’étonnerait même pas).
Et aussi, cette classe VertexVector hérite de std::vector, qui n’est pas non plus bien véloce, surtout si on lui enfile des structures complexes sans passer par un pointeur (ce qui a pour effet d’appeler le constructeur par copie à chaque push_back). Et dans ce source on lui enfile des Vertex, qui contiennent 2 vecteurs + une liste stl d’entiers.
Rester à évaluer ce qui est le plus rapide entre appeler le constructeur par copie ou faire une allocation dynamique. Dans le cas précis de ce vertex, j’imagine qu’on préfèrera la première solution, les allocations dynamiques pouvant être très lentes.
Pour résumer ce que le C++ apporte :
– temps de compilation x2,
– taille du code x2,
– lisibilité /2,
– vitesse d’exécution /2,
– temps de maintenance x2,
tout ça pour grapiller quelques minutes en évitant d’implémenter sa propre pile, liste, string,…
Et pour finir, on peut faire du code C ANSI réutilisable et stable et rapide et lisible, on est pas des demomakers après tout.
Bah ca vient de mon install MorphOS-SDK. gcc-2.95.3 (un truc du genre).
Le problème c’est que gcc 2.95.3 (egcs en general pour la partie C++) est sorti avant que la STL soit normalisée dans le C++ ansi/iso du coup chaque implémenteur y allait de sa petite sauce
Ceci dit maintenant tu des get(), getline() et autre qui te permettent de faire sensiblement la même chose (sauf que tu doit allouer ton propre buffer et donc le libérer aussi).
C’est toi qui l’a écrit ça ou bien c’était déjà dedans ?
Fab:
Comme je l’ai deja dit plein de fois, mes connaissances en C++ sont limitees et empiriques.
=> Traduction:
C’est pas moi qui se colle a l’optimisation
Alex: le code d’origine est dispo sur le CVS du site officiel.
j’ai juste mis en 1 seul rep les projets makehuman/mhgui et animorph. Ensuite voir les diffs entre.
J’ai essayé hier soir et c’est plus rapide sous MOS avec un peg G3 et une radeon 8500 que sur le Sempron 2800+ (mais qui utilise un chipset graphique intégrés merdique) et pas qu’un peu !!
Toutes les fonctions ne sont pas encore implémentées, mais on peu déjà s’amuser à créer un perso et à l’habiller sous blender.
Encore un soft inimaginable il y a quelques temps sur nos plateformes !!
LorD a écrit :
Encore un soft inimaginable il y a quelques temps sur nos plateformes !!
Manque d’imagination tout ca!
Moi j’en reve deja a l’epoque du CPC464…
/me qui devient aussi bouffon que TheFab… mefiance
Ah sinon la radeon 8500 est tres performante il me semble dans sa serie.
Essais la nouvelle version ce soir, tu seras encore plus content
Trucs&Astuces: clicker sur le petit icone en haut, a gauche, qui ressemble a une grille, cela enleve le maillage du personnage et accelere vraiement le rendu.
Non mais j’ai fait des trucs avec Blender, des personnages, des essais de décors… mais je n’ai rien texturé, ni animé (à chaque fois je me rendais compte trop tard que c’était inanimable (par exemple les vetements des personnages.
Puis je ne sais pas encore ce que je vais faire de mes trucs en 3D, mon idée est de les utiliser comme base à mes dessins ou animations 2D… Mais c’est plus long de faire de la 3D que de la 2D, surtout que je ne suis jamais satisfait de ce que je fais.
- Vous devez être connecté pour répondre à ce sujet.
› Forums › AmigaOS, MorphOS et AROS › Développement › MakeHuman pour MorphOS