#0 

04-08-2009 19:23:44

Hawk
Membre
Lieu: Wissous
Date d'inscription: 08-11-2008
Messages: 91
Site web

Bonjour à tous.

J'ai un problème qui me bloque énormément depuis une semaine. Je travail sur un moteur de jeu 3D depuis quelques mois, qui tournait assez bien il y a encore une semaine, à 60FPS (valeur que j'ai fixée)
Sans que je comprenne pourquoi, du jour au lendemain, je me retrouve à un FPS de 14 !! Du coup, ça rame énormément.
Pour comprendre ce phénomène, j'ai lancé gprof sous linux sur mon binaire, pour comprendre d'où venait le problème. Et voici un extrait du résultat :

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
time   seconds   seconds    calls  Ts/call  Ts/call  name   
25.00      0.01     0.01                             irr::core::array<unsigned char, irr::core::irrAllocator<unsigned char> >::operator[](unsigned int)
25.00      0.02     0.01                             irr::video::CColorConverter::convert24BitTo24Bit(unsigned char const*, unsigned char*, int, int, int, bool, bool)
25.00      0.03     0.01                             irr::video::SColor::getRed() const
25.00      0.04     0.01                             irr::video::SColor::getAlpha() const

Un peu plus bas, dans le call graph :

granularity: each sample hit covers 4 byte(s) for 25.00% of 0.04 seconds

index % time    self  children    called     name
                                                 <spontaneous>
[1]     25.0    0.01    0.00                 irr::core::array<unsigned char, irr::core::irrAllocator<unsigned char> >::operator[](unsigned int) [1]
-----------------------------------------------
                                                 <spontaneous>
[2]     25.0    0.01    0.00                 irr::video::CColorConverter::convert24BitTo24Bit(unsigned char const*, unsigned char*, int, int, int, bool, bool) [2]
-----------------------------------------------
                                                 <spontaneous>
[3]     25.0    0.01    0.00                 irr::video::SColor::getRed() const [3]
-----------------------------------------------
                                                 <spontaneous>
[4]     25.0    0.01    0.00                 irr::video::SColor::getAlpha() const [4]


Je n'arrive pas à comprendre d'où vient ce phénomène.
Je suis sous Ubuntu 9.04, je compile avec gcc, j'utilise Irrlicht 1.5.
Est-ce que quelqu'un aurait une idée pour m'éclairer ?

D'avance merci.

EDIT : J'ai relancer mon binaire, et refait gprof dessus, je n'obtiens pas les même résultats !

Each sample counts as 0.01 seconds.
  %   cumulative   self              self     total           
time   seconds   seconds    calls  Ts/call  Ts/call  name   
50.00      0.01     0.01                             irr::video::CNullDriver::addAndDropMaterialRenderer(irr::video::IMaterialRenderer*)
25.00      0.01     0.01                             irr::video::SMaterialLayer::SMaterialLayer()
25.00      0.02     0.01                             irr::core::CMatrix4<float>::operator()(int, int) const

granularity: each sample hit covers 4 byte(s) for 50.00% of 0.02 seconds

index % time    self  children    called     name
                                                 <spontaneous>
[1]     50.0    0.01    0.00                 irr::video::CNullDriver::addAndDropMaterialRenderer(irr::video::IMaterialRenderer*) [1]
-----------------------------------------------
                                                 <spontaneous>
[2]     25.0    0.01    0.00                 irr::video::SMaterialLayer::SMaterialLayer() [2]
-----------------------------------------------
                                                 <spontaneous>
[3]     25.0    0.01    0.00                 irr::core::CMatrix4<float>::operator()(int, int) const [3]

Dernière modification par Hawk (04-08-2009 19:36:19)

Hors ligne


#1 

04-08-2009 20:57:02

tmyke
Administrateur
Date d'inscription: 24-03-2008
Messages: 1025

Heu, j'avoue que si je comprend globalement ton soucis, pour le reste, je suis largué.

Les connaisseurs analyseront certainement les chiffre ci-dessus, mais moi ...  hmm


Force et sagesse...

Hors ligne


#2 

04-08-2009 21:47:45

Magun
SleekThink Producer
Lieu: Punakha
Date d'inscription: 18-11-2007
Messages: 904
Corrections: 2
Site web

j'avoue ça me fait cela de temps a autre  avec irrlicht donc je ne peut pas te dire pourquoi, j'ai une petit idéee mais bon hmm ....
ba la seul chose que je peut te dire ses de regarder si l'anti-aliasing, vertical syncro et le stencil buffer ne sont pas activer, il on tendance a faire chuter les fps

ps : j'ai certainement de faute d'orthographe  plus grosse que le monde mais j'ai pas mon correcteur la ... smile

sinon si tu utilise la svn, ses peut-être sa bien que je doute qu'il est changer le code par un, contre optimiser

Dernière modification par Magun (04-08-2009 22:06:18)

Hors ligne


#3 

06-08-2009 12:55:53

dark calculator
Abonné
Date d'inscription: 25-02-2007
Messages: 153

Juste une idée  comme ça, ta pas fais une mise a jour d'ubuntu par hasard ?

Enfin test sur un autre système au cas où, avec la version a 60 FPS aussi si tu l'a encore.

je connaissais pas gprof sa a l'air pas mal mais du coup je peux pas te dire.

Enfin test quand même l'accélération graphique sous ubuntu si elle est pu activé a cause d'une maj c'est sur que sa réduit pas mal les FPS.

Je crois que c'est glxgears pour faire tester.

Hors ligne


#4 

07-08-2009 09:26:46

Hawk
Membre
Lieu: Wissous
Date d'inscription: 08-11-2008
Messages: 91
Site web

@Dark Calculator :
Effectivement, c'est un problème d'accélération graphique qui était désactivée.
Merci beaucoup, le problème est corrigé.

Hors ligne


Options Liens officiels Caractéristiques Statistiques Communauté
Corrections
irrlicht
irrklang
irredit
irrxml
xhtml 1.0
css 2.1
Propulsé par FluxBB
Traduit par FluxBB.fr
Analysé par
880 membres
1424 sujets
11113 messages
Dernier membre inscrit: mandrifidy
16 invités en ligne
Aucun membre connecté
RSS Feed