| |
|
|
![iF: 22.11.2007](.././../../i/a/1.gif) | 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. ![](.././../../i/s/__upl_ext_1111498442.gif)
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. ![](.././../../i/s/eusa_think.gif) |
|
|
| |
|
|
|
![iF: 23.11.2007](.././../../i/a/1.gif) | 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. ![](.././../../i/s/__upl_ext_1111498502.gif) |
|
|
| |
|
|
|
![RGH: 24.11.2007](.././../../i/a/20.gif) 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: 24.11.2007](.././../../i/a/20.gif) 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: 24.11.2007](.././../../i/a/20.gif) 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 ▲ |
|
|
|