| |
|
|
| Yo verstehe algo no! Mein Performancevergleich zwischen Between y uno eigenen Función ha ergeben el el propio Función deutlich más rápido arbeitet.
Yo habe tal vez aber auch falso getestet! Hier mein Test para Between (se en me 18.000 veces abgearbeitet) KompilierenMarcaSeparaciónvar 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
Und hier el schnellere propio Versión (se en me 21.000 veces abgearbeitet) KompilierenMarcaSeparaciónvar 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
RETORNO 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!) O (X!>XXXX!)
RETORNO 0
ENDIF
IF (YY!<YYY!) O (Y!>YYYY!)
RETORNO 0
ENDIF
RETORNO 1
ENDPROC
El schnellere Versión ha mehr XProfanzeilen, Yo hätte gemeint el Between en el or-Doppelpack trotzdem más rápido es. |
|
|
| |
|
|
|
| Yo sehe grad el KompilierenMarcaSeparación
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 falso es, aber el debería en el Bezug en el Geschwindigkeitstest no Einfluss haben. |
|
|
| |
|
|
|
RGH | Versuche lo veces con el neuen Función INTERSECT(): KompilierenMarcaSeparación El letzer Procedimiento es sólo wegen el Vergleichbarkeit como. Natürlich sería mach en esta verzichten y oben igual INTERSECT(s, BALL#, TEST#) escribir, lo que el Geschichte otra vez en encima 40% beschleunigt. Saludo 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
Yo verstehe algo no! Mein Performancevergleich zwischen Between y uno eigenen Función ha ergeben el el propio Función deutlich más rápido arbeitet. El schnellere Versión ha mehr XProfanzeilen, Yo hätte gemeint el Between en el or-Doppelpack trotzdem más rápido es.
Hola si,
qué XProfan-intern bastante viel Tiempo verbraucht, es el Auswerten de Parametern, egal si como Funktionsparameter en Klammern oder como Procedimiento-Parámetro con PARAMETERS. In Deinem Ejemplo con BETWEEN hay su una stattliche Anzahl mehr, como en el sin (20 hier y 8 hay). Der Vorteil de BETWEEN es hier el, dass Usted eigentlich no propio Proztedur RECTINTERSECT mehr necesidad y el Chiste breve direkt einsetzen kannst. Schon reduzieren el übergebenen Parámetro de 20 en 12 ... y ya es el Ganze doppelt así rápidamente (obwohl lo siempre todavía 4 Parameterübergaben mehr son): KompilierenMarcaSeparaciónvar 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
Saludo 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 ▲ |
|
|
|