Page 2 sur 2
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 9:00
par G-Rom
edit : je viens de faire des tests et ma routine est plus rapide de peut etre 20%
Donne le Bench mark
Il y a une legere difference G-rom : mon code fait un seul test par boucle. Le tiens en fait 2 (4 meme !) constament. J'AIIIIIIME les choses optimisé
on va dire , qu'il en fait 4.
je reprends ton code :
If KeyboardPushed(#PB_Key_Left)
If left=0
left=1
EndIf
Else
left=0
EndIf
Deux test ici , on est d'accord
mais ensuite , t'es obligé de testé left pour bouger ou pas ton sprite
if Left = 1
; on bouge...
endif
Donc t'en a 3 minimum , avec une lisibilité du code , qui à la longue devient illisible.
si tu veut être optimisé , dans ton cas , tu es obligé de fusionné la partie clavier avec la partie affichage , pas terrible à la longue , m'enfin tu fait comme tu veut ,
je préfèré avoir un code lisible et fonctionnel , qu'un code qui fait 20% de +

parce que j'ai imbriqué l'affichage et la gestion du clavier.
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 9:10
par SPH
Le miens, puis le tiens. A executer compilé et plusieurs fois puis faire la moyenne (enfin, c'est comme ca que je vois l'équité) :
Code : Tout sélectionner
InitSprite() And InitMouse() And InitKeyboard()
Global NewMap KeyFlag.b()
OpenScreen(800,600,32,"")
temps=GetTickCount_()
For i=1 To 10000000
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
If left=0
left=1
variable=512
EndIf
Else
left=0
EndIf
Next
temps=GetTickCount_()-temps
CloseScreen()
MessageRequester("Erreur", Str(temps)+" ms")
Code : Tout sélectionner
InitSprite() And InitMouse() And InitKeyboard()
Global NewMap KeyFlag.b()
OpenScreen(800,600,32,"")
temps=GetTickCount_()
For i=1 To 10000000
ExamineKeyboard()
If KeyboardPushed(Const) And KeyFlag(Str(Const)) = 0
KeyFlag(Str(Const)) = 1
variable=512
EndIf
If KeyboardPushed(Const)=0 And KeyFlag(Str(Const)) = 1
KeyFlag(Str(Const)) = 0
EndIf
Next
temps=GetTickCount_()-temps
CloseScreen()
MessageRequester("Erreur", Str(temps)+" ms")
Chez moi, moyenne du miens : 2000, et du tiens : 2800
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 9:14
par G-Rom
c'est pas comme ca qu'on mesure le temps des tests , là tu prends même le temps de la boucle for / next.
c'est pas précis
Regarde ceci , j'ai été supris :
Code : Tout sélectionner
ITERATION = 100000
Delay(1000)
For i = 1 To ITERATION
A.i = ElapsedMilliseconds()
; ******************************************************************
; TEST SOUS LA FORME G-ROM
; ******************************************************************
If 1=1 And 2=2
EndIf
If 3=3 And 4=4
EndIf
; ******************************************************************
;
; ******************************************************************
C.i = ElapsedMilliseconds()
R = R + (C-A)
Next
TimeA = R : R=0
Delay(1000)
For i = 1 To ITERATION
A.i = ElapsedMilliseconds()
; ******************************************************************
; TEST FACON SPH
; ******************************************************************
If 1=1
If 3=3
EndIf
Else
EndIf
If 5=5
EndIf
; ******************************************************************
;
; ******************************************************************
C.i = ElapsedMilliseconds()
R = R + (C-A)
Next
TimeB = R : R=0
Gain.f = 100 - (TimeA * 100 / TimeB)
If Gain > 0
MessageRequester("Dans le cul SPH :D","4 tests = "+Str(TimeA) +" ms" +Chr(10)+" 3 tests = "+Str(TimeB)+" ms"+Chr(10)+" Gain en % par rapport à 3 test = "+Str(Gain)+"%")
Else
MessageRequester("Dans le cul G-ROM:D","4 tests = "+Str(TimeA) +" ms" +Chr(10)+" 3 tests = "+Str(TimeB)+" ms"+Chr(10)+" Gain en % par rapport à 3 test = "+Str(Gain)+"%")
EndIf
Donne moi juste le titre du message requester de fin

enfin bon , on s'éloigne du sujet original , on va pas commencer à faire des "punch" de nos codes

Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 9:18
par SPH
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 12:55
par Backup
...
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 13:28
par venom
@g-ROM
non ton code fonctionne super bien

c'est celui de dobro qui ne va pas chez moi.
Pour l'optimisation, ne vous chamaillez pas

quand je disais que je voyé sa plus court je penser tout simplement qu'il y avais une fonction native pour sa.
Comme par exemple quand ont utilise for NeXT avec un step par exemple.
Fin passons le résultat de vos code est exactement ce que je chercher c'est le but principale.
@++
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 13:29
par Backup
venom a écrit :@g-ROM
non ton code fonctionne super bien

c'est celui de dobro qui ne va pas chez moi.
heu tu as essayé le dernier en couleurs ?
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 13:32
par venom
Non je suis sur mon téléphone la

mais si purebasic se porte sur iPhone je dit pas non

.
Je le test ce soir Dobro
@++
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 13:33
par Backup
ok ok !

Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 13:37
par G-Rom
je ne comprends pas pourquoi vous vous prenez la tete avec KeyboardPushed()
alors que KeyboardReleased() marche tres bien

je suis d'accord avec toi , mais le comportement n'est pas le même , tu est obligé de relâcher la touche pour pouvoir bouger.

Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 13:47
par Backup
ha oui !

tres juste

Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 15:20
par Geo Trouvpatou
Salut.
Ce qui faisait planter le premier code de Dobro chez nous les pauvres Windowsiens, c'était tout simplement : KeyboardMode(#PB_Keyboard_International) qui se trouvait dans la boucle.
Il faut le mettre à l'extérieur.
C'est pour cela que le code de G-Rom fonctionne.
Une fois mis à l'extérieur, le code fonctionne sans planter.
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 16:21
par venom
En effet Geo sa fonctionne très bien sans KeyboardMode(#PB_Keyboard_International)
@++
Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 16:29
par Backup
c'est vrais , j'ai ete perturbé par le fait qu'il ne s'agissais pas de mon code au debut
mais de celui de Venom
du coup, j'ai pas respecter une architecture correcte !
deja que j'ai du deplacer le flipbuffer()
Mea culpa

Re: Déplacer, Bloquer, Relacher
Publié : mer. 02/juin/2010 16:31
par venom
mais euh!!!....
voilà sa tombe sur moi
il faudrais que je retelecharge le soft du soldat qui range les codes tout seuls tiens
bon le problème est régler.
merci en tout cas
@++