| |
|
|
| je comprends quelque chose pas! mon Performancevergleich entre Between et einer eigenen Funktion hat ergeben cela qui eigene Funktion deutlich plus rapide arbeitet.
j'ai peut-être mais aussi faux getestet! ici mon Test pour Between (wird chez mir 18.000 la fois abgearbeitet) KompilierenMarqueSéparationvar BALL.XS!=0
var BALL.YS!=0
var BALL.RS!=0
CLS
var TME&=&GETTICKCOUNT+3000
var C&=0
WHILE &GETTICKCOUNT<TME&
C&=C&+1
PERFPROC()
ENDWHILE
PRINT C&
WAITINPUT
END
proc PERFPROC
BALL.XS!=RND(40)-20
BALL.YS!=RND(40)-20
RETURN RECTINTERSECT(BALL.XS!,BALL.YS!,100,100,50,50,200,200)
endproc
proc RECTINTERSECT
PARAMETERS X!,Y!,XX!,YY!,XXX!,YYY!,XXXX!,YYYY!
RETURN BETWEEN(X!,XXX!,XXXX!,Y!,XXX!,YYYY!) OR BETWEEN(XX!,XXX!,XXXX!,YY!,XXX!,YYYY!)
endproc
et ici qui schnellere eigene Version (wird chez mir 21.000 la fois abgearbeitet) KompilierenMarqueSéparationvar BALL.XS!=0
var BALL.YS!=0
var BALL.RS!=0
CLS
var TME&=&GETTICKCOUNT+3000
var C&=0
WHILE &GETTICKCOUNT<TME&
C&=C&+1
PERFPROC()
ENDWHILE
PRINT C&
WAITINPUT
FIN
proc PERFPROC
BALL.XS!=RND(40)-20
BALL.YS!=RND(40)-20
RETOUR RECTINTERSECT(BALL.XS!,BALL.YS!,100,100,50,50,200,200)
endproc
proc RECTINTERSECT
PARAMETERS X!,Y!,XX!,YY!,XXX!,YYY!,XXXX!,YYYY!
IF (XX!<XXX!) OU (X!>XXXX!)
RETOUR 0
ENDIF
IF (YY!<YYY!) OU (Y!>YYYY!)
RETOUR 0
ENDIF
RETOUR 1
endproc
qui schnellere Version hat plus XProfanzeilen, je hätte gemeint cela Between im or-Doppelpack quand même plus rapide ist. |
|
|
| |
|
|
|
| je vois grad cela KompilierenMarqueSéparation
proc RECTINTERSECT
PARAMETERS X!,Y!,XX!,YY!,XXX!,YYY!,XXXX!,YYYY!
RETURN BETWEEN(X!,XXX!,XXXX!,Y!,XXX!,YYYY!) OR BETWEEN(XX!,XXX!,XXXX!,YY!,XXX!,YYYY!)
endpr
sowieso faux ist, mais cela sollte im Bezug sur den Geschwindigkeitstest keinen Einfluss avons. |
|
|
| |
|
|
|
RGH | Versuche es la fois avec qui neuen Funktion INTERSECT(): KompilierenMarqueSéparation qui letzer Procédure ist seulement à cause de qui Vergleichbarkeit là. Bien sûr serait mach sur cet verzichten et dessus juste INTERSECT(s, BALL#, TEST#) écrivons, quoi qui Geschichte nochmal um sur 40% beschleunigt. Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.11.2007 ▲ |
|
|
|
|
RGH | |
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.11.2007 ▲ |
|
|
|
|
RGH | iF
je comprends quelque chose pas! mon Performancevergleich entre Between et einer eigenen Funktion hat ergeben cela qui eigene Funktion deutlich plus rapide arbeitet. qui schnellere Version hat plus XProfanzeilen, je hätte gemeint cela Between im or-Doppelpack quand même plus rapide ist.
allô iF,
quoi XProfan-interne assez viel Zeit usé, ist cela Auswerten de Parametern, égal si comme Funktionsparameter dans Klammern ou bien comme Procédure-paramètre avec PARAMETERS. dans Deinem Beispiel avec BETWEEN gibt es en une stattliche Anzahl plus, comme dans dem sans (20 ici et 8 là). qui Vorteil de BETWEEN ist ici qui, dass Du eigentlich aucun eigene Proztedur RECTINTERSECT plus brauchst et den Einzeiler direct einsetzen peux. déjà réduire sich qui übergebenen paramètre de 20 sur 12 ... et déjà ist cela Ganze doppelt so vite (quoique es toujours 4 Parameterübergaben plus sommes): KompilierenMarqueSéparationvar BALL.XS!=0
var BALL.YS!=0
CLS
var TME&=&GETTICKCOUNT+3000
var C&=0
WHILE &GETTICKCOUNT<TME&
C&=C&+1
PERFPROC()
ENDWHILE
PRINT C&
WAITINPUT
END
proc PERFPROC
BALL.XS!=RND(40)-20
BALL.YS!=RND(40)-20
RETURN BETWEEN(BALL.XS!,50,200,BALL.YS!,50,200) OR
BETWEEN(100,50,200,100,50,200)
endproc
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 24.11.2007 ▲ |
|
|
|