Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Problème très très étrange

8 réponses
Avatar
Nicolas
Salut à tous

Dans un de mes programme, j'ai remplacé l'utilisation de la fonction qsort
par un quicksort a "moi" :
c'est un petit soft 3D qui fait tourné un object en openGL... le Sort est
utilisé une seul fois au tout début, lors de diverses optimisations.

et donc depuis que j'ai mis mon trie.. le rendu est plus lent (environ 2fps
selon les objets 3D)

premier chose : je me suis dit que mon trie est foireux et que les datas
n'étaient plus optimisées .. j'ai comparé toutes les datas triées avec les
2 fonctions, elles sont identiques, bien triées... dans les 2 cas OpenGL
recoit exactement les memes choses, c'est pas la que ca rallenti...

en suite j'ai vérifier si mon trie crignotait pas de la mémoire ... non
j'alloue rien dans la fonction recursive et dans le gestionnaire des taches
le niveau d'occupation memoire pour les 2 versions est cazi pareil.... y a
pas eu de pique lors du trie...

Je comprend pas :(
si vous avez des idées n'hésitez pas

8 réponses

Avatar
Jonathan Mcdougall
dans les 2 cas OpenGL
recoit exactement les memes choses, c'est pas la que ca rallenti...

j'alloue rien dans la fonction recursive et dans le gestionnaire des taches
le niveau d'occupation memoire pour les 2 versions est cazi pareil.... y a
pas eu de pique lors du trie...


"tout fonctionne bien, mais ça ne marche pas", c'est ça?

Essaie de poster un peu de code en strippant l'opengl, si tu penses
que ça peut valoir la peine.


Jonathan

Avatar
Arnaud Debaene
Nicolas wrote:
Salut à tous
Bonjour.


<snip>

si vous avez des idées n'hésitez pas


Commences par passer les deux veriosn de ton programme au profileur pour
identifier les goulots d'étranglement.

Arnaud

Avatar
Luc Hermitte
Bonsoir,

"Nicolas" wrote in
news:bg6nom$i7c$:

Dans un de mes programme, j'ai remplacé l'utilisation de la fonction
qsort par un quicksort a "moi" :


Cela va peut-etre te paraitre idiot mais ... pourquoi ?

Pourquoi remplacer, dans un projet qui tournait bien, une fonction bien
rodée, optimisée et bug-free par une faite à la main sur laquelle tu ne
vas avoir aucune garantie ?

c'est un petit soft 3D qui fait tourné un object en openGL... le Sort
est utilisé une seul fois au tout début, lors de diverses
optimisations.

et donc depuis que j'ai mis mon trie.. le rendu est plus lent
(environ 2fps selon les objets 3D)


Sinon, je suis d'accord que tout cela est assez étrange vu que le sort
n'est appelé qu'une seule et unique fois et en dehors des boucles --
d'après ce que tu nous dis.


Note au passage, le tri par fusion nous assure une complexité constante
en O(n ln n) alors que le quick sort tourne en O(n^2) dans le pire des
cas

--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>

Avatar
read_in
Le Tue, 29 Jul 2003 23:08:38 +0200, Nicolas a écrit :

Dans un de mes programme, j'ai remplacé l'utilisation de la fonction qsort
par un quicksort a "moi" :
c'est un petit soft 3D qui fait tourné un object en openGL... le Sort est
utilisé une seul fois au tout début, lors de diverses optimisations.


t'es sur que dans ta boucle principale, il y a aucun appel à ta fonction ?
ou rien qui trie ? car normalement, d'apres ce que tu dis, il devrait ne
pas y avoir d'incidence...

Avatar
Loïc Joly
Nicolas wrote:
Salut à tous

Dans un de mes programme, j'ai remplacé l'utilisation de la fonction qsort
par un quicksort a "moi" :


Juste une remarque à part : Il existe un remplaçant très séduisant à
qsort : std::sort. Et je ne dis pas ça juste pour le plaisir d'être à la
mode C++ : Il est vraiment plus rapide, et plus simple à utiliser aussi.

Voir par exemple
http://www.cuj.com/documents/sy92/cujcexp1908austern/austern.htm pour
une discussion plus complète.

--
Loïc

Avatar
kanze
"Nicolas" wrote in message
news:<bg6nom$i7c$...

Dans un de mes programme, j'ai remplacé l'utilisation de la fonction
qsort par un quicksort a "moi" :

c'est un petit soft 3D qui fait tourné un object en openGL... le Sort
est utilisé une seul fois au tout début, lors de diverses
optimisations. et donc depuis que j'ai mis mon trie.. le rendu est
plus lent (environ 2fps selon les objets 3D)

premier chose : je me suis dit que mon trie est foireux et que les
datas n'étaient plus optimisées .. j'ai comparé toutes les datas
triées avec les 2 fonctions, elles sont identiques, bien triées...
dans les 2 cas OpenGL recoit exactement les memes choses, c'est pas la
que ca rallenti...

en suite j'ai vérifier si mon trie crignotait pas de la mémoire ...
non j'alloue rien dans la fonction recursive et dans le gestionnaire
des taches le niveau d'occupation memoire pour les 2 versions est cazi
pareil.... y a pas eu de pique lors du trie...


Tu n'aurais pas appelé ta fonction qsort, par hazard, de façon à ce que
quand openGL appelle qsort, il choppe la tienne, et non celle du système ?

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Avatar
Nicolas
J'ai capté :p

En fait tout marche bien :

La seule différence c'est que les datas ne sont pas dans le meme ordre :
Je ne trie pas un tableau de valeurs mais des structures sur un de leur
champ contenant des doublons...
donc j'ai un classement un peu différents selon la méthodes, mais je m'en
fout je veux juste que cela soir trié sur le premier champ et basta...

qsort monsort
1 Toto 1 Titi
1 Titi 1 Toto
2 Popo 2 Papa
2 Papa 2 Pupu
2 Pupu 2 Popo
etc


La différences de vitesse de Rendu 3D, vient justement de cette
difference d'ordre...
les cartes 3D Nvidia gere un vertex cache de quelques elements (car un
vertex peut-être partagé par plusieurs faces consécutives , enfin je vais
pas faire un cour de 3D ici ;) )

J'ai recodé un trie parcque j'avais besoin de trier avec 2 tableaux (le
critere de comparaison pour trié l'un est dans l'autre) donc pour le qsort
pas bon ;(

Merci pour vos conseils
Avatar
Luc Hermitte
"Nicolas" wrote in
news:bg9jm9$38s$:

J'ai recodé un trie parcque j'avais besoin de trier avec 2
tableaux (le
critere de comparaison pour trié l'un est dans l'autre) donc pour le
qsort pas bon ;(


Et en définissant la fonction de comparaison employée par std::sort ?

--
Luc Hermitte <hermitte at free.fr>
FAQ de <news:fr.comp.lang.c++> :
<http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ/>
Dejanews : <http://groups.google.com/advanced_group_search>