SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

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

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 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] Memória na Otimização

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


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

    [Tutorial] Memória na Otimização Empty [Tutorial] Memória na Otimização

    Mensagem por Weslley_Script Seg 3 Abr 2023 - 15:59

    M emoria na O timizaзгo
    Aprenda a deixar seus cуdigos mais bonitos e otimizados!
    Í ndice
    • 1.0 Introdução
    • 1.1 Pré-requisitos
    • 1.2 Método de benchmark
    • 2.0 Criação de variáveis ​​locais
    • 2.1 Entendendo o problema
    • 2.2 Otimizando com variáveis ​​globais
    • 2.3 Resultados
    • 3.0 Considerações Finais

    1. Introdução _

    • Primeiro, quero deixar bem claro que este tutorial é extremamente superficial, e ideológico. É impossível eu explicar todos os casos possíveis para utilizar este método em otimização de códigos, pois são infinitas as possibilidades em que este método é cabível. A ideia que será passada aqui é genérica e pode ser utilizada para resolver vários problemas. Tenha consciência de que normalmente o primeiro bloco de cуdigo que vocк escreve na maioria das vezes nгo й o mais otimizado. Também não vou falar de outras técnicas como SWITCH, simplificação de condições, etc, pois a ideia aqui é evitar ao máximo o uso excessivo de vários locais.

    1.1 Pré -requisitos


    1.2 M étodo de benchmark

    • Usando o método do Slice: https://scriptsamp.forumeiros.com/t49266-tutorial-comparacao#98925 Todos os testes de benchmark rodaram por pelo menos 1 minuto em cada teste para evitar picos de processamento, e foram feitos em 3 espécies diferentes : Core i5-4690, Xeon E5450, e Pentium E2200, todos em modo de ALTO DESEMPENHO. Todos os dados serão apresentados em forma de gráfico de barras, em mídia de execuções por milissegundo. Quanto mais alta a barra, melhor.

    2. Criação de variáveis ​​locais

    • Um dos problemas mais comuns que me deixam neste fórum, é a criação e destruição de vários locais onde nem sempre se faz necessário. Talvez a função mais comum seja a função simplificada de GetPlayerName que ao invÉs de passar o nick do jogador por referência, passa por retorno:
      PHP como:
      Código:
      stock GetName(playerid)
      {
          new name[24];
          GetPlayerName(playerid,name,24);
          return name;
      }
      // Sendo comumente utilizada em format
      format(string,100,"Seu nome й: %s",GetName(playerid)); 


    2.1 Entendo o problema

    • Mesmo parecendo ser uma função inocente, toda vez que é chamada ela cria um vetor de 24 cйlulas, e logo após mandar o resultado para um formato de função, destrói essa mesma variável.

    2.2 O timizando com variáveis ​​globais

    • A primeira solução, é criar uma variável global para evitar criar e destruir um vetor toda vez que precisarmos desta informação.
      PHP como:
      Código:
      new pName[24];
      stock GetName(playerid)
      {
          GetPlayerName(playerid,pName,24);
          return pName;
      }
      format(string,100,"Seu nome й: %s",GetName(playerid)); 

    • Mesmo que evitemos a criação e destruição desta variável, ainda podemos evitar que a função GetPlayerName seja chamada sempre. Basta tornar este vetor em uma matriz per-player e então obter o nome do jogador quando ele se conectar. Caso você use SetPlayerName por qualquer motivo, não se esqueça de definir o valor de pName para o novo nick do jogador, ou o antigo será usado no lugar.
      PHP como:
      Código:
      new pName[MAX_PLAYERS][24];
      // Em OnPlayerConnect
      GetPlayerName(playerid,pName[playerid],24);
      // Toda vez que quiser o nick do jogador, vocк nгo precisa mais de funзгo alguma, afinal ja temos o valor na memуria!
      format(string,100,"Seu nome й: %s",pName[playerid]); 


    2.3 R esultados

    • As funções de formato foram incluídas nos testes de desempenho, sendo o eixo Y referente às execuções por milissegundo.

      [Tutorial] Memória na Otimização YvpuojG



    3. C onsiderações finais

    • Espero que tenha entendido a ideia deste tutorial. Mesmo sendo curto, acredito que a ideologia ficou bem explicada. Você deve abusar de variáveis ​​globais, mas sempre ficar atento ao consumo de memória do servidor, mesmo o uso sendo baixíssimo comparado a outros aplicativos. Use a memoria do servidor sempre que puder evitar o processador. Não deixe de comentar alguma crítica ou sugestão.


    Creditos: arakuta



    [Tutorial] Memória na Otimização D07Xwqb
    [Tutorial] Memória na Otimização Yjab9HN

      Data/hora atual: Qui 2 maio 2024 - 9:46