Page 2 sur 2
Re: Le point sur Delay(), WindowEvent() et l'usage CPU à 100
Publié : mer. 09/sept./2015 19:17
par microdevweb
@crisot,
Intéressant, je n'ai pas testé mais du fait que fred semble approuvé je te donne raison. Par contre Spock à raison que cette manière de procédé est reprise dans la doc.
Perso dans le cas de gestion de canvas,
avant j'utilisais
Code : Tout sélectionner
Repeat
Event=WaitWindowEvent(1)
;Traitement du survol canvas ect...
Until Event=#PB_Event_CloseWindow
Maintenant je ne traite plus mes événements dans dans la boucle (excepté pour les jeux) mais utilise BindEvent();BindGadgetEvent();BindMenuEvent()
Code : Tout sélectionner
BindGadgetEvent(#Canvas,@EventCanvas())
Repeat:WaitWindowEvent():ForEver
Re: Le point sur Delay(), WindowEvent() et l'usage CPU à 100
Publié : jeu. 10/sept./2015 11:21
par microdevweb
Voila un petit teste
Sans delay() processeur occupé à 25% (beaucoup pour cette petite boucle) avec delay(1) 0%
Alors je penses qu'il faut agir au cas par cas
Code : Tout sélectionner
InitSprite()
OpenWindow(0,0,0,800,600,"teste")
OpenWindowedScreen(WindowID(0),0,0,800,600)
Define gTimeElapsed,gTriger=1000,gCount=0
CreateSprite(0,100,100)
LoadFont(0,"Arial",30)
Repeat
; Delay(1)
gEvent=WindowEvent()
If (ElapsedMilliseconds()-gTimeElapsed)>=gTriger ;Le triger ICI
gCount+1
StartDrawing(SpriteOutput(0))
DrawingFont(FontID(0))
X=(100/2)-((TextWidth(Str(gCount)+" '' "))/2)
Y=(100/2)-((TextHeight(Str(gCount)+" '' "))/2)
DrawText(X,Y,Str(gCount)+" '' ")
StopDrawing()
gTimeElapsed=ElapsedMilliseconds()
EndIf
ClearScreen(0)
DisplaySprite(0,350,250)
FlipBuffers()
Until gEvent=#PB_Event_CloseWindow
End
Re: Le point sur Delay(), WindowEvent() et l'usage CPU à 100
Publié : jeu. 10/sept./2015 11:48
par microdevweb
même en modifiant le code avec double boucle et n'inversant les buffers que toute les seconde, sans Delay() conso 25%
Code : Tout sélectionner
Define gTimeElapsed,gTriger=1000,gCount=0
CreateSprite(0,100,100)
LoadFont(0,"Arial",30)
Repeat
; Delay(1)
Repeat
gEvent=WindowEvent()
If gEvent=#PB_Event_CloseWindow
End
EndIf
Until gEvent=0
If (ElapsedMilliseconds()-gTimeElapsed)>=gTriger ;Le triger ICI
gCount+1
StartDrawing(SpriteOutput(0))
DrawingFont(FontID(0))
X=(100/2)-((TextWidth(Str(gCount)+" '' "))/2)
Y=(100/2)-((TextHeight(Str(gCount)+" '' "))/2)
DrawText(X,Y,Str(gCount)+" '' ")
StopDrawing()
gTimeElapsed=ElapsedMilliseconds()
ClearScreen(0)
DisplaySprite(0,350,250)
FlipBuffers()
EndIf
ForEver
L'avis de Fred serait intéressant sur ce point?
Re: Le point sur Delay(), WindowEvent() et l'usage CPU à 100
Publié : jeu. 10/sept./2015 11:53
par microdevweb
Petit correctif, FlipBuffer fait bien sont taf dans ce cas entre 0% et 2%
Ben voila je viens d'apprendre encore un truc.
Code : Tout sélectionner
InitSprite()
OpenWindow(0,0,0,800,600,"teste")
OpenWindowedScreen(WindowID(0),0,0,800,600)
Define gTimeElapsed,gTriger=1000,gCount=0
CreateSprite(0,100,100)
LoadFont(0,"Arial",30)
Repeat
; Delay(1)
Repeat
gEvent=WindowEvent()
If gEvent=#PB_Event_CloseWindow
End
EndIf
Until gEvent=0
If (ElapsedMilliseconds()-gTimeElapsed)>=gTriger ;Le triger ICI
gCount+1
StartDrawing(SpriteOutput(0))
DrawingFont(FontID(0))
X=(100/2)-((TextWidth(Str(gCount)+" '' "))/2)
Y=(100/2)-((TextHeight(Str(gCount)+" '' "))/2)
DrawText(X,Y,Str(gCount)+" '' ")
StopDrawing()
gTimeElapsed=ElapsedMilliseconds()
EndIf
ClearScreen(0)
DisplaySprite(0,350,250)
FlipBuffers()
ForEver
Re: Le point sur Delay(), WindowEvent() et l'usage CPU à 100
Publié : ven. 11/sept./2015 20:24
par G-Rom
J'ai fait du propre , délockage. Merci de laisser ce topic dans son sujet initial.
Les débats stérile sur ce sujet sont strictement interdit. un simple merci suffit, ou une question si on ne comprends pas le 1° topic.
Merci Crisot.
Re: Le point sur Delay(), WindowEvent() et l'usage CPU à 100
Publié : dim. 13/sept./2015 17:25
par falsam
G-Rom a écrit :J'ai fait du propre , délockage. Merci de laisser ce topic dans son sujet initial.
Quand tu fais le ménage chez toi tu jettes les meubles avec ? J'avais posté un code essayant de démontrer l’intérêt de vider les événements de la fenêtre avant de passer à autre chose et tu l'as virer. Ce code affichait aussi l'utilisation du processeur pour la tache active. Je sais bien que tu n'aimes pas les taches mais la phobie à ce point !!! Et oui je râle.
Si quelqu'un a sauvegardé ce code, je serais content de le récupérer car j'ai oublié de le sauvegarder.
Re: Le point sur Delay(), WindowEvent() et l'usage CPU à 100
Publié : dim. 13/sept./2015 22:00
par G-Rom
Ça ne me dit rien , pourquoi je l'aurais effacer ? si c'est le cas, c'est involontaire. désoler.
Edit: si il n'y avait pas eu de bazar sur le topic , j'aurais pas eu à le nettoyer.