Cual es la diferencia.
#1

Bueno mi duda es la siguiente, cual es la diferencia de programar de estas dos formas que les mostrare a continuaciуn ademas de ahorrar lineas, siempre me hice esa pregunta.

PD: no me tome la libertad de testear, para hallar respuestas.


Forma 1:
pawn Код:
public OnPlayerConnect(playerid){
if(sentencia){
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
}else if(sentencia){
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
}
return 1;
}

Forma 2:
pawn Код:
MensageHolaMundo(playerid){
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
SendClientMessage(playerid,-1,"Hola Mundo!!!");
}

public OnPlayerConnect(playerid){
if(sentencia){
MensageHolaMundo(playerid);
}else if(sentencia){
MensageHolaMundo(playerid);
}
return 1;
}
Reply
#2

En tiempo no obtienes diferencias, ya que de todas formas llamas a lo mismo, lo que haces es resumir lнneas y a la hora de compilar lo compila en menos tiempo. (Por menos lнneas de cуdigo)
Reply
#3

En mi opiniуn serнa para tener un callback mas ordenadito y asн cuando tenga algun problema voy directamente sobre йsa funcion.
Reply
#4

esto es enserio?. -.-
Reply
#5

Quote:
Originally Posted by OTACON
Посмотреть сообщение
esto es enserio?. -.-
Si mi estimado contacon.
Reply
#6

Quote:
Originally Posted by jotajeda
Посмотреть сообщение
Si mi estimado contacon.
00100000 01110100 01110101 00100000 01100101 01110010 01100101 01110011 00100000 01101001 01100100 01101001 01101111 01110100 01100001 00111111 00111111 00100000 01101010 01100001 01101010 01100001 01101010 00101100 00100000 01100010 01110010 01101111 01101101 01100001 00100000 00111011 00101001 00101110
Reply
#7

Quote:
Originally Posted by OTACON
Посмотреть сообщение
00100000 01110100 01110101 00100000 01100101 01110010 01100101 01110011 00100000 01101001 01100100 01101001 01101111 01110100 01100001 00111111 00111111 00100000 01101010 01100001 01101010 01100001 01101010 00101100 00100000 01100010 01110010 01101111 01101101 01100001 00100000 00111011 00101001 00101110
01101010 01100001 01101010 01100001 01101010 01100001 01101010 01100001 01101010 00101100 00100000 01101110 01100001 01100100 01100001 00100000 01100010 01100101 01100010 01100101 00101100 00100000 01110011 01101111 01101100 01101111 00100000 01101100 01101111 00100000 01101000 01100001 01100111 01101111 00100000 01110000 01100001 01110010 01100001 00100000 01101110 01101111 00100000 01100001 01100010 01110101 01110010 01110010 01101001 01110010 01101101 01100101 00100000 01101010 01100001 01101010 01100001 01101010 01100001 01101010 01100001 01101010 01100001 00101110 00100000 00111010 00101010 01000010 01101111 01100010 01101111 00100000 00101101 01011111 00101101
Reply
#8

Quote:
Originally Posted by Fluid016
Посмотреть сообщение
En tiempo no obtienes diferencias, ya que de todas formas llamas a lo mismo, lo que haces es resumir lнneas y a la hora de compilar lo compila en menos tiempo. (Por menos lнneas de cуdigo)
En realidad si se obtiene diferencias de ejecuciуn pero en este caso casi no es notable ya que se llaman pocas funciones, si se pregunta el porquй hay diferencias en tiempo de ejecuciуn es porque si definimos una funciуn para llamar otras funciones se genera mбs bytecode.

Con llamada de funciуn:

pawn Код:
PROC  func_01
    break    
    push.c             0x1F4
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    push.c             0x22C
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    push.c             0x264
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    push.c             0x29C
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    push.c             0x2D4
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    zero.pri  
    retn      
ENDP

PROC  OnPlayerConnect
    break    
    push.s               0xC
    push.c               0x4
    call             func_01
    break    
    const.pri            0x1
    retn      
ENDP
Sin llamada de funciуn:

pawn Код:
PROC  OnPlayerConnect
    break    
    push.c             0x1F4
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    push.c             0x22C
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    push.c             0x264
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    push.c             0x29C
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    push.c             0x2D4
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    break    
    const.pri            0x1
    retn      
ENDP
No es que marque mucho la diferencia pero claro estб que con la llamada de la funciуn "MensajeHolaMundo" se produce una llamada local a la funciуn "MensajeHolaMundo", en este caso no es notable la diferencia.

Recomendaria hacer este tipo de cуdigo con un iterador si el objetivo es ahorrar lineas:

pawn Код:
PROC  OnPlayerConnect
    break    
    push.c               0x0
    jump           jump_0000
 jump_0002:
    break    
    inc.s               -0x4
 jump_0000:
    load.s.pri          -0x4
    const.alt            0x5
    jsgeq          jump_0001
    break    
    push.c             0x1F4
    push.c              -0x1
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
    jump           jump_0002
 jump_0001:
    stack                0x4
    break    
    const.pri            0x1
    retn      
ENDP
Creo que esta seria la segunda manera mбs optima, es simple aca se realizan operaciones matemбticas ya que aca se dice que se van a realizar 5 saltos a partir del 0, o sea 0, 1, 2, 3, 4 que equivalen a 5 repeticiones ejecutando el nativo "SendClientMessage":

pawn Код:
push.c        0x1F4 // Argumento playerid
    push.c              -0x1 //Color en este caso (-1)
    push.s               0xC
    push.c               0xC
    sysreq.c    [BAD SYSREQ]
    stack               0x10
PD: La segunda opciуn es la mбs optima pero generaria mбs bytecode por lo cuбl el .amx seria de mayor tamaсo.

OJO: Estas operaciones son sin las condiciones ya que se me olvidу agregarlas, pero de igual forma no tienen sentido esas condiciones ya que el else if nunca se ejecutaria.

Un saludo.
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)