SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 13 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

    [Tutorial] Pequenas Otimizações

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11625
    Moedas : 1032881
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Pequenas Otimizações Empty [Tutorial] Pequenas Otimizações

    Mensagem por Weslley_Script Qui 16 Mar 2023 - 7:09

    Introduзгo:

    Oi galera hoje vou postar alguns cуdigos relacionados a testes de velocidade.

    Sгo cуdigos para vocк mesmo usar em seu pc e decidir qual й melhor ou pior.

    Nгo й bem um Tutorial,atй porque nгo explico nada,apenas й 'Dicas' de pequenas otimizaзхes que vocк pode fazer.

    Nota:
    Espaços não Otimizam Nada
    return Funcao(playerid) em um comando tambйm nгo otimiza nada
    ! e == 0 e == false sгo a mesma coisa

    Codigos:

    Vou colocar o mбximo de cуdigos possнvel,execute-o em seu pc e veja qual й o melhor


    While x For Loop



    Código:
    #include <a_samp>





    Código:
    #define maxloop     (10000000)   //loops para teste




    Código:
    public OnFilterScriptInit()
    {
        //==========================================================================

        new
            dCount = GetTickCount(),array,i;

        while (i < maxloop)
        {
            i++;
            array++;
        }

        printf("[While] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - dCount));

        //==========================================================================

        new
            bCount = GetTickCount(),arrei,a;
           
        for(a = 0; a < maxloop; a++)
        {
            arrei++;
        }
        printf("[For] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - bCount));

        //==========================================================================
        return true;
    }


    RESULTADO: For Mais rбpido

    Code:

    Código:
    [13:21:56] [While] Functions: 10000000 - Temp: 486
    [13:21:57] [For] Functions: 10000000 - Temp: 388


    Static x New



    Código:
    #include <a_samp>


    #define maxloop     (1000000)   //loops para teste

    public OnFilterScriptInit()
    {
        //==========================================================================

        new
            dCount = GetTickCount();

        for(new i; i < maxloop; ++i)
        {
            static array;
        }

        printf("[Static] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - dCount));

        //==========================================================================

        new
            bCount = GetTickCount();
        for(new i; i < maxloop; ++i)
        {
            new array;
        }
        printf("[New] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - bCount));

        //==========================================================================
        return true;
    }


    RESULTADO: Static mais rбpido

    Code:

    Código:
    [13:23:07] [Static] Functions: 1000000 - Temp: 24
    [13:23:07] [New] Functions: 1000000 - Temp: 43


    Max_Players x GetMaxPlayers


    Código:
    #include <a_samp>


    #define maxloop     (100000)   //loops para teste

    public OnFilterScriptInit()
    {
        //==========================================================================

        new
            dCount = GetTickCount();

        for(new i; i < maxloop; ++i)
        {
            for(new p; p < MAX_PLAYERS; p++)
            {
            }
        }

        printf("[MaxPlayers] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - dCount));

        //==========================================================================

        new
            bCount = GetTickCount();
        for(new i; i < maxloop; ++i)
        {
            for(new p; p < GetMaxPlayers(); p++)
            {
            }
        }
        printf("[GetMaxPlayer] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - bCount));

        //==========================================================================
        return true;
    }


    RESULTADO: Max_Players mais rбpido,claro



    Código:
    [13:26:21] [MaxPlayers] Functions: 100000 - Temp: 1064
    [13:26:23] [GetMaxPlayer] Functions: 100000 - Temp: 2255


    Defines x Stocks



    Código:
    stock GetSAMP() return 10;
    #define GetSAMP2 10




    Código:
    #include <a_samp>


    #define maxloop     (100000)   //loops para teste

    public OnFilterScriptInit()
    {
        //==========================================================================

        new
            dCount = GetTickCount();

        for(new i; i < maxloop; ++i)
        {
            printf("Is %d",GetSAMP2);
        }

        printf("[Defines] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - dCount));

        //==========================================================================

        new
            bCount = GetTickCount();
        for(new i; i < maxloop; ++i)
        {
            printf("Is %d",GetSAMP());
        }
        printf("[Stocks] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - bCount));

        //==========================================================================
        return true;
    }


    RESULTADO: Defines,sempre que possнvel use-as

    Code:

    Código:
    [13:30:04] [Defines] Functions: 100000 - Temp: 8534
    [13:30:55] [Stocks] Functions: 100000 - Temp: 10971


    I++ x ++I


    Código:
    #include <a_samp>


    #define maxloop     (100000000)   //loops para teste

    public OnFilterScriptInit()
    {
        //==========================================================================

        new
            dCount = GetTickCount();

        for(new i; i < maxloop; ++i)
        {
        }

        printf("[++i] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - dCount));

        //==========================================================================

        new
            bCount = GetTickCount();
        for(new i; i < maxloop; i++)
        {
        }
        printf("[i++] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - bCount));

        //==========================================================================
        return true;
    }


    RESULTADO: ++i й pouco mais otimizado

    Code:

    Código:
    [13:33:24] [++i] Functions: 100000000 - Temp: 2129
    [13:33:26] [i++] Functions: 100000000 - Temp: 2147


    Strlen x Eos



    Código:
    #include <a_samp>


    #define maxloop     (100000000)   //loops para teste

    static string[64] = "Oi isto й um teste haha";
    public OnFilterScriptInit()
    {
        //==========================================================================

        new
            dCount = GetTickCount();

        for(new i; i < maxloop; ++i)
        {
            if(string[10] != '\0')
            {
            }
        }

        printf("[Eos] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - dCount));

        //==========================================================================

        new
            bCount = GetTickCount();
        for(new i; i < maxloop; i++)
        {
            if(strlen(string) > 10)
            {
            }
        }
        printf("[Strlen] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - bCount));

        //==========================================================================
        return true;
    }


    RESULTADO: Usando End Of String com Condicional й muito mais rбpido
    Code:

    Código:
    [13:46:14] [Eos] Functions: 100000000 - Temp: 4084
    [13:46:23] [Strlen] Functions: 100000000 - Temp: 9799


    Strins x Format



    Código:
    #include <a_samp>


    #define maxloop     (100000)   //loops para teste

    static stringformat[64] = "Oi isto й um teste haha";
    static stringstrins[64] = "Oi isto й um teste haha";
    public OnFilterScriptInit()
    {
        //==========================================================================

        new
            dCount = GetTickCount();

        for(new i; i < maxloop; ++i)
        {
            format(stringformat,64,"%s,oi",stringformat);
        }

        printf("[Format] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - dCount));

        //==========================================================================

        new
            bCount = GetTickCount();
        for(new i; i < maxloop; i++)
        {
            strins(stringstrins,",oi",strlen(stringstrins),sizeof stringstrins);
        }
        printf("[Strins] Functions: %d - Temp: %d",maxloop,(GetTickCount()  - bCount));
        //==========================================================================
        printf(stringstrins);
        printf(stringformat);
        return true;
    }



    RESULTADO: Usando Strins й bem mais otimizado,sempre use quando puder

    Code:

    Código:
    [13:44:24] [Format] Functions: 100000 - Temp: 61
    [13:44:24] [Strins] Functions: 100000 - Temp: 28


    Como podem ver otimizaзгo em pawn existe,apesar de pawn nгo ser nada otimizado.
    Porйm sempre tente fazer seu melhor,por que pawn jб й uma Palavrão bloqueado,agora se deixar mais Palavrão bloqueado ainda fode tudo.

    Atй semana que vem,vou sair por um tempo,vгo postando seus testes e dicas para testes.

    Atй mais.

    Valeu


    Creditos: IPSBruno



    [Tutorial] Pequenas Otimizações D07Xwqb
    [Tutorial] Pequenas Otimizações Yjab9HN

      Data/hora atual: Sex 8 Nov 2024 - 4:16