Originally Posted by DesingMyCry
A falta de objeciones, obligado a debatir conmigo mismo...
Creй un script que supera en velocidad, 30 veces a la funciуn de Zume, ademбs de tener mas opciones de uso.
http://prntscr.com/5nliuj
El script en cuestiуn, utiliza 2 funciones para su correcto funcionamiento.
pawn Code:
/* [interno] [nombre] _@_i@strreplace [/nombre] [propуsito] modificar una palabra o frase en cuestiуn, de una cadena de carбcteres [/propуsito] [parбmetros] [original:array] cadena que serб modificada, tambiйn es la variable destino [/original:array] [anterior:array] palabra o conjunto de las mismas, a ser buscada para ser modificada [/anterior:array] [nueva:array] nueva palabra que se sobreescribirб [/nueva:array] [ignorecase:bool] filtrar entre mayъsculas y minъsculas [/ignorecase:bool] [original:int] tamaсo del parбmetro [original:array] [/original:int] [/parбmetros] [retorno] [int] [>= 0] nъmero de reemplazos que hizo la funciуn [/>= 0] [/int] [/retorno] [/interno] */ stock _@_i@strreplace(original[], anterior[], nueva[], bool:ignorecase = false, original@t = sizeof(original)) { new c, pos, anterior@t = strlen(anterior); while(~(pos = strfind(original, anterior, ignorecase, pos))) { strdel(original, pos, pos+anterior@t); strins(original, nueva, pos, original@t);
pos++; c++; }
return c; }
/* [funciуn] [nombre] str_replace [/nombre] [propуsito] modificar una o mas palabras o frases en cuestiуn, de una cadena de carбcteres [/propуsito] [parбmetros] [original:array] cadena que serб modificada, tambiйn es la variable destino [/original:array] [nueva:array] nueva palabra que se sobreescribirб [/nueva:array] [ignorecase:bool] filtrar entre mayъsculas y minъsculas [/ignorecase:bool] [original:int] tamaсo del parбmetro [original:array] [/original:int] [...] cadenas que serбn buscadas para ser modificadas [/...] [/parбmetros] [retorno] [int] [>= 0] nъmero de reemplazos que hizo la funciуn [/>= 0] [/int] [/retorno] [/funciуn] */ stock str_replace(original[], nueva[], bool:ignorecase, original@t = sizeof(original), {_}:...) { new arg@num = numargs(), s;
for(new i = 4; i < arg@num; i++) { static _@[144]; new indice, caracter;
principio:
caracter = getarg(i, indice);
_@[indice++] = caracter;
if(caracter != 0) goto principio;
s += _@_i@strreplace(original, _@, nueva, ignorecase, original@t); } return s; }
Con un define ya quedarнa igual que tu funciуn:
pawn Code:
#define detectar(%0) str_replace(%0, "", true, sizeof(%0), "xD", "servidor", "metagaming", "server", "admin", "SA:MP")
Y voilа, 30 veces mas veloz.
pawn Code:
public OnGameModeInit() { n>10;
#define num 10 #define num2 4 new tiempo; new cadena[144] = "Variable -SA:MP- contenedora -admin- de palabras -admin- que deberбn -xD- ser -metagaming- eliminadas -servidor- como mнnimo...-server-"; printf("COMIENZA PRUEBA DE VELOCIDAD > %d vueltas de %d repeticiones c/u -^", num2, num); n>2; printf("\tDetectarMetagaming(\"%s\");", cadena); for(new i_ = 0; i_ < num2; i_++) { tiempo = GetTickCount();
for(new i__ = 0; i__ < num; i__++) { new _@ = DetectarMetagaming(cadena); #pragma unused _@ }
printf("\t\tVuelta %d demorу %d milisegundos", i_+1, GetTickCount()-tiempo); } printf("\tResultado:\t%s", cadena); n>3;
cadena = "Variable -SA:MP- contenedora -admin- de palabras -admin- que deberбn -xD- ser -metagaming- eliminadas -servidor- como mнnimo...-server-"; printf("\tstr_replace(\"%s\");", cadena); for(new i_ = 0; i_ < num2; i_++) { tiempo = GetTickCount();
for(new i__ = 0; i__ < num; i__++) { new _@ = str_replace(cadena, "", true, sizeof(cadena), "xD", "servidor", "metagaming", "server", "admin", "SA:MP"); #pragma unused _@ }
printf("\t\tVuelta %d demorу %d milisegundos", i_+1, GetTickCount()-tiempo); } printf("\tResultado:\t%s", cadena);
n>6; return 1; }
|