24.06.2012, 10:20
(
Last edited by ipsBruno; 24/06/2012 at 10:55 AM.
)
Usando aquela minha include de varGet, stringSet podemos usar a nossa boa e bela criatividade e formar infinitas coisas. Pensando nisto hoje pela manhг, consegui desenvolver um strcmp super rбpido. Que pode vencer qualquer strcmp em longas cadeias de caracteres
Cуdigo:
Exemplo de Uso:
O close_strcmp deve ser dado para fechar a comparaзгo. Usando a primeira string usada. No caso ("o jovem gosta de pao")
Velocidade:
A velocidade desse projeto й bastante rбpida, isto apenas quando usado cadeia enorme de strings, tais maiores que 5 ou 6 caracteres. Pois a velocidade permanece a mesma pois ele nгo faz um loop como strcmp lento da sa:mp fazia
Cadeia de caracteres menores que 5 ou 4 caracteres vгo apresentar uma velocidade inferior ao strcmp
Resultados:
# Ainda nгo adicionei case_sensitive para FALSE (true no caso de strcmp) Logo quando strcmp й usado em false serб mais rбpido que este projeto, porйm sу se nгo for com muitos caracteres, pois strcmp trabalha com loop in string
_
Ao contrбrio do strcmp. Este:
RETORNA TRUE -> STRINGS IGUAIS
RETORNA FALSE -> STRINGS DIFERENTES
Cуdigo:
pawn Code:
#define new_strcmp(%0,%1) \
(varSet(%0, 1), varGet(%1) == varSet(%0, 0))
pawn Code:
if(new_strcmp("o jovem gosta de pao", "o nгo gosta de pao")) {
printf("sгo iguais");
}
else {
printf("nгo sгo iguais");
}
close_strcmp("o jovem gosta de pao");
Velocidade:
A velocidade desse projeto й bastante rбpida, isto apenas quando usado cadeia enorme de strings, tais maiores que 5 ou 6 caracteres. Pois a velocidade permanece a mesma pois ele nгo faz um loop como strcmp lento da sa:mp fazia
Cadeia de caracteres menores que 5 ou 4 caracteres vгo apresentar uma velocidade inferior ao strcmp
pawn Code:
new tick;
tick = GetTickCount();
for(new i; i != 100000; i++) {
if(new_strcmp("O CACHORRO COME CARNE, O GATO COME CARNE, EU COMO CARNE", "O CACHORRO COME CARNE, O GATO COME CARNE, EU COMO CARNE")) {
}
close_strcmp("O CACHORRO COME CARNE, O GATO COME CARNE, EU COMO CARNE");
}
printf("New Strcmp %d", GetTickCount() - tick);
tick = GetTickCount();
for(new i; i != 100000; i++) {
strcmp("O CACHORRO COME CARNE, O GATO COME CARNE, EU COMO CARNE", "O CACHORRO COME CARNE, O GATO COME CARNE, EU COMO CARNE", true);
}
printf("SAMP Strcmp %d", GetTickCount() - tick);
Quote:
[07:31:58] New Strcmp 530 [07:32:00] SAMP Strcmp 1960 |
pawn Code:
#define strcmp(%0,%1,%2) !new_strcmp(%0, %1)
Ao contrбrio do strcmp. Este:
RETORNA TRUE -> STRINGS IGUAIS
RETORNA FALSE -> STRINGS DIFERENTES