Español
Wünsche y Sugerencias

X11Beta6: between gegen caso/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.

Yo habe tal vez aber auch falso getestet! Hier mein Test para Between (se en me 18.000 veces abgearbeitet)
KompilierenMarcaSeparación
var 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ón
var 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.
 
22.11.2007  
 



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.
 
23.11.2007  
 




RGH
Versuche lo veces con el neuen Función INTERSECT():
KompilierenMarcaSeparación
var BALL# = new(xpRect)
BALL#.posx! = 0
BALL#.posy! = 0
BALL#.x! = 100
BALL#.y! = 100
var TEST# = new(xpRect)
TEST#.posx! = 50
TEST#.posy! = 50
TEST#.x! = 150
TEST#.y! = 150
CLS
var TME&=&GETTICKCOUNT+3000
var C&=0

WHILE &GETTICKCOUNT<TME&

    C&=C&+1
    PERFPROC()

ENDWHILE

PRINT C&
WAITINPUT
END

proc PERFPROC

    BALL#.posx! = RND(40)-20
    BALL#.posy! = RND(40)-20
    RETURN RECTINTERSECT(BALL#, TEST#)

endproc

proc RECTINTERSECT

    PARAMETERS X#, Y#

    IFNOT INTERSECT(r, X#, Y#)

        RETURN 0

    ENDIF

    RETURN 1

ENDPROC


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
Ach sí: natürlich sería uno en Bällen el Struktur xpSphere uso:
KompilierenMarcaSeparación
var BALL# = new(xpSphere)
BALL#.posx! = 0
BALL#.posy! = 0
BALL#.x! = 100
var TEST# = new(xpSphere)
TEST#.posx! = 50
TEST#.posy! = 50
TEST#.x! = 100
CLS
var TME&=&GETTICKCOUNT+3000
var C&=0

WHILE &GETTICKCOUNT<TME&

    C&=C&+1
    PERFPROC()

ENDWHILE

PRINT C&
WAITINPUT
END

proc PERFPROC

    BALL#.posx! = RND(40)-20
    BALL#.posy! = RND(40)-20
    RETURN INTERSECT(s, BALL#, TEST#)

ENDPROC

 
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ón
var 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  
 



Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

2.368 Views

Untitledvor 0 min.
H.Brill24.09.2023
holmol9330.05.2013
Torben Nissen12.02.2012
bastler17.01.2011

Themeninformationen

Dieses Thema ha 2 subscriber:

RGH (3x)
iF (2x)


Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie