02.01.2015, 16:14
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.
Con un define ya quedarнa igual que tu funciуn:
Y voilа, 30 veces mas veloz.
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")
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;
}