[Include] strcmp Rбpido
#1

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:
pawn Code:
#define new_strcmp(%0,%1) \
                (varSet(%0, 1), varGet(%1) == varSet(%0, 0))
Exemplo de Uso:
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");
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

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);
Resultados:
Quote:

[07:31:58] New Strcmp 530
[07:32:00] SAMP Strcmp 1960

# 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

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
Reply
#2

Wow! Parabйns Drakins, me parece muito bom, mas e ZCMD, jб й bastante otimizado nй?
Reply
#3

Уtimo trabalho, parabйns!
pawn Code:
REP += 3;
[Essa minha pobreza de REP ahuahuah]
Reply
#4

ZCMD й outra coisa. Aqui estamos trabalhando com comparaзгo de string nгo processamento de comandos.

ZCMD й um tanto otimizado, daria para melhorar ainda. Enfim, ele usa CallFunction para reconhecer os comandos. Nгo й bem uma comparaзгo de strings, como aqui.

Se for fazer um comparador de strings similar ao zcmd precisarнamos declarar uma string а callback a cada comparaзгo .. Nгo serve.

Estou pensando em mudar. Afinal, usando este mйtodo ficou realmente um tanto lento. Pretendo fazer um esquema estilo aquele prev_strcmp. Mas nгo agora, este projeto й mais para estudos da varSet, varGet mesmo.

Testes quando usa strcmp em false:
pawn Code:
[08:07:06] New Strcmp 453
[08:07:07] SAMP Strcmp 132
Mas isto nгo й problema, essa strcmp que fiz foi especialmente para comparar strings com tamanhos muito grandes de milhares de caracteres. Ele ainda funciona

Isto й para verem como aquela minha include de varGet, varSet й ъtil ...

- Й como cu, cada um usa como lhe convйm, й sу ter criatividade que aparecem vбrias utilidades.
Reply
#5

Drakins, antigamente no fуrum, vocк postou algum cуdigo que permitiria utilizar zcmd + strcmp, poderia reposta-lo ?
parabйns pelo sistema, fico fast.
Reply
#6

Quote:

- Й como cu, cada um usa como lhe convйm, й sу ter criatividade que aparecem vбrias utilidades.

Hahahaha entendir perfeitamente!
Reply
#7

Eu tabem como carne -q

-

Muito boa a include xD
Reply
#8

Muito bom Bruno, super fuck
E dessa vez eu entendiii =D

@OFF
Gostei da parte do
Quote:

- Й como cu, cada um usa como lhe convйm, й sу ter criatividade que aparecem vбrias utilidades.

LOL Vai pra tu laercio.
Reply
#9

Quote:
Originally Posted by StrondA_
View Post
Drakins, antigamente no fуrum, vocк postou algum cуdigo que permitiria utilizar zcmd + strcmp, poderia reposta-lo ?
parabйns pelo sistema, fico fast.
Claro!
http://forum.sa-mp.com/showthread.ph...77#post1943377
Reply
#10

Ual, muito bom!

@Edit

E bruno sempre esquecendo de algo neh! 'close_strcmp'
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)