Cual es la diferencia. -
Parka - 12.11.2014
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;
}
Respuesta: Cual es la diferencia. -
Fluid016 - 12.11.2014
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)
Respuesta: Cual es la diferencia. -
jotajeda - 12.11.2014
En mi opiniуn serнa para tener un callback mas ordenadito y asн cuando tenga algun problema voy directamente sobre йsa funcion.
Respuesta: Cual es la diferencia. -
OTACON - 12.11.2014
esto es enserio?. -.-
Respuesta: Cual es la diferencia. -
jotajeda - 13.11.2014
Quote:
Originally Posted by OTACON
esto es enserio?. -.-
|
Si mi estimado contacon.
Respuesta: Cual es la diferencia. -
OTACON - 13.11.2014
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
Respuesta: Cual es la diferencia. -
jotajeda - 13.11.2014
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
Respuesta: Cual es la diferencia. -
oOFotherOo - 13.11.2014
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.