Différence de performances VB => PB ?
Différence de performances VB => PB ?
Hello,
Je suis en train de porter une assez grosse application OpenGL de VB à PB.
Alors que je croyais évident que PB serait bien plus rapide que VB dans tous les cas de figure, je rencontre des différences de performances à l'avantage de VB dans des grosses boucles notamment dans les cas suivants :
1) Loader d'objet 3D. Il s'agit d'une boucle permettant de charger une scène OpenGL à partir de fichiers ".OBJ". En VB, cette boucle met 500 ms à s'exécuter alors qu'elle met 1600 ms en PB. Le code est exactement le même à la différence de syntaxe du langage près.
2) Boucle de rafraîchissement d'affichage OpenGL. Là ou j'ai un framerate de 20 FPS en fullscreen en VB, je n'ai que 15 FPS en PB. Cette boucle fait des "glCallList" sur l'ensemble des Mesh de la scène OpenGL.
Ma question est donc la suivante : Est-il connu que les boucles (FOR, FOREACH) ou les appels d'APIs (API OpenGL en l'occurrence) ou encore les tableaux ou listes chaînées de PB sont particulièrement lent ?
Cordialement.
Je suis en train de porter une assez grosse application OpenGL de VB à PB.
Alors que je croyais évident que PB serait bien plus rapide que VB dans tous les cas de figure, je rencontre des différences de performances à l'avantage de VB dans des grosses boucles notamment dans les cas suivants :
1) Loader d'objet 3D. Il s'agit d'une boucle permettant de charger une scène OpenGL à partir de fichiers ".OBJ". En VB, cette boucle met 500 ms à s'exécuter alors qu'elle met 1600 ms en PB. Le code est exactement le même à la différence de syntaxe du langage près.
2) Boucle de rafraîchissement d'affichage OpenGL. Là ou j'ai un framerate de 20 FPS en fullscreen en VB, je n'ai que 15 FPS en PB. Cette boucle fait des "glCallList" sur l'ensemble des Mesh de la scène OpenGL.
Ma question est donc la suivante : Est-il connu que les boucles (FOR, FOREACH) ou les appels d'APIs (API OpenGL en l'occurrence) ou encore les tableaux ou listes chaînées de PB sont particulièrement lent ?
Cordialement.
Peut être que VB optimize les boucles qui ne servent à rien, comme pour le C ?
as-tu veillé à ne pas mettre des choses du genre ;
?
Faut pas faire de calcul dans les boucles
as-tu veillé à ne pas mettre des choses du genre ;
Code : Tout sélectionner
For t=0 to variable-1
Faut pas faire de calcul dans les boucles

Non, quand je dis calcul, c'est dans la ligne ou tu écrit "For", car ça éxecute le calcul à chaque boucles, ce qui, forcément, ralentit tout, alors que d'autres compilers n'éxécute le calcul qu'une seule fois (je ne sais pas pour vb...)Niffo a écrit :Oui, en fait je compare la vitesse d'exécution des exécutables
Code : Tout sélectionner
ForEach TabDecors()
*TD.Object3D = @TabDecors()\OB
glPushMatrix_()
glLoadName_(ListIndex(TabDecors()))
glTranslatef_(*TD\Position\x, *TD\Position\y, -*TD\Position\z)
glRotatef_(*TD\Orientation\x, 1.0, 0.0, 0.0)
glRotatef_(-*TD\Orientation\y, 0.0, 1.0, 0.0)
glRotatef_(*TD\Orientation\z, 0.0, 0.0, 1.0)
glScalef_(*TD\Scale\x, *TD\Scale\y, *TD\Scale\z)
glColor4f_(*TD\Color\r, *TD\Color\g, *TD\Color\b, *TD\Color\a)
glCallList_(*TD\Object)
glPopMatrix_()
;End With
Next
-
- Messages : 333
- Inscription : sam. 25/juin/2005 11:18
- Localisation : Laon (02)
- Contact :
Oui, Windows inclue les APIs OpenGL. Sauf que sur la prochaine version de Windows, Windows Vista, l'OpenGL ne sera plus implenté nativement. Si l'on souhaite travailler avec OpenGL va nous falloir installer les DLLs nous même.Mais je savais pas que fonctions openGL était dans l'api Windows.
A+
Guimauve