Portal SAMP
[Ajuda] Ajuda pvf numa otimização - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Ajuda pvf numa otimização (/showthread.php?tid=3352)



Ajuda pvf numa otimização - Gui_City - 19/02/2023

Olá queria saber se vcs podem me ajuda abri meu servidor RPG recentemente, aí quando pega umas 10 pessoas on dá MT lag. Aí tirei umas mapeacao e resolvel um pouco o lag mais ainda continua MT lag queria saber se vcs podem me ajuda a resolver isso pois estou sofrendo DMS pra resolver isso. Se puderem em ajuda em uma otimização ou algo do dipo eu agradeceria DMS da conta.


RE: Ajuda pvf numa otimização - White_Blue - 19/02/2023

Dicas para otimizar seu código:
Remova códigos inúteis;
Utilize a include foreach para fazer os loops(Loops mais otimizados);
Evite a criação excessiva de mapas e objetos;
Em ocasiões onde necessita de várias verificações da mesma variável ao mesmo tempo, utilize switch case(Como o caso das dialogs).
Em certos casos, utilize variáveis estáticas pois assim você vai dizer para o compilador que aquela variável apenas vai ter vida útil até o fim da execução do programa, assim alocando menos memória do que em uma variável automática. Um exemplo:
Código PHP:
stock GetPlayerNameEx(playerid) {
  new Nome// Alocando muito mais memória do que o necessário para a variável "Nome"
  GetPlayerName(playeridNomeMAX_PLAYER_NAME);
  return Nome;
}

stock GetPlayerNameEx(playerid) {
    static Nome// Alocando muito menos de memória do que uma variável automática.
    GetPlayerName(playeridNomeMAX_PLAYER_NAME);
    return Nome;

Só utilize includes necessárias, pois includes são em geral bem pesadas e são compiladas junto com ao seu script. Então não use includes que você não precisa.

Por fim e não menos importante, lembre-se que cada tipo de variável tem seu tamanho como é possível ver abaixo:
[Imagem: v1AagEC.png]

Pode não ser um problema de otimização também. Pode ser um problema de conexão na rede do seu provedor de hospedagem ou até mesmo sua internet. Ou dependendo do plano, o seu gamemode pode estar utilizando muito processamento do servidor do seu provedor. Por isso que é recomendado utilizar uma hospedagem de qualidade.


RE: Ajuda pvf numa otimização - Gui_City - 19/02/2023

Ok mn, vou tentar aqui. Tu tem algum meio de contato pra eu poder falar com você?

Opa mn. Creio eu que não e problema na hospedagem, pois uso vps Br 4gb . Se eu usa
switch case ao invés de If(dialogid ==
Fica mais ótimizad0?


RE: Ajuda pvf numa otimização - AllanSG - 19/02/2023

(19/02/2023 13:31)White_Blue Escreveu: Dicas para otimizar seu código:
Remova códigos inúteis;
Utilize a include foreach para fazer os loops(Loops mais otimizados);
Evite a criação excessiva de mapas e objetos;
Em ocasiões onde necessita de várias verificações da mesma variável ao mesmo tempo, utilize switch case(Como o caso das dialogs).
Em certos casos, utilize variáveis estáticas pois assim você vai dizer para o compilador que aquela variável apenas vai ter vida útil até o fim da execução do programa, assim alocando menos memória do que em uma variável automática. Um exemplo:
Código PHP:
stock GetPlayerNameEx(playerid) {
  new Nome// Alocando muito mais memória do que o necessário para a variável "Nome"
  GetPlayerName(playeridNomeMAX_PLAYER_NAME);
  return Nome;
}

stock GetPlayerNameEx(playerid) {
    static Nome// Alocando muito menos de memória do que uma variável automática.
    GetPlayerName(playeridNomeMAX_PLAYER_NAME);
    return Nome;

Só utilize includes necessárias, pois includes são em geral bem pesadas e são compiladas junto com ao seu script. Então não use includes que você não precisa.

Por fim e não menos importante, lembre-se que cada tipo de variável tem seu tamanho como é possível ver abaixo:
[Imagem: v1AagEC.png]

Pode não ser um problema de otimização também. Pode ser um problema de conexão na rede do seu provedor de hospedagem ou até mesmo sua internet. Ou dependendo do plano, o seu gamemode pode estar utilizando muito processamento do servidor do seu provedor. Por isso que é recomendado utilizar uma hospedagem de qualidade.

Olá, tenho algumas dúvidas.

Como troco os ifs das minhas verificaçoes pra switch? se possivel um exemplo simples com IsPlayerAdmin só pra entender a funcionalibidade

Outra duvida, uso static ao inves de new dentro de funcoes que acabam quando sao executadas, tipo em comandos? ou seja news apenas para variaveis globais que utilizo em diversas partes do gm?

Desde ja, agradeço.


RE: Ajuda pvf numa otimização - zBL4CK - 19/02/2023

(19/02/2023 21:07)AllanSG Escreveu:
(19/02/2023 13:31)White_Blue Escreveu: Dicas para otimizar seu código:
Remova códigos inúteis;
Utilize a include foreach para fazer os loops(Loops mais otimizados);
Evite a criação excessiva de mapas e objetos;
Em ocasiões onde necessita de várias verificações da mesma variável ao mesmo tempo, utilize switch case(Como o caso das dialogs).
Em certos casos, utilize variáveis estáticas pois assim você vai dizer para o compilador que aquela variável apenas vai ter vida útil até o fim da execução do programa, assim alocando menos memória do que em uma variável automática. Um exemplo:
Código PHP:
stock GetPlayerNameEx(playerid) {
  new Nome// Alocando muito mais memória do que o necessário para a variável "Nome"
  GetPlayerName(playeridNomeMAX_PLAYER_NAME);
  return Nome;
}

stock GetPlayerNameEx(playerid) {
    static Nome// Alocando muito menos de memória do que uma variável automática.
    GetPlayerName(playeridNomeMAX_PLAYER_NAME);
    return Nome;

Só utilize includes necessárias, pois includes são em geral bem pesadas e são compiladas junto com ao seu script. Então não use includes que você não precisa.

Por fim e não menos importante, lembre-se que cada tipo de variável tem seu tamanho como é possível ver abaixo:
[Imagem: v1AagEC.png]

Pode não ser um problema de otimização também. Pode ser um problema de conexão na rede do seu provedor de hospedagem ou até mesmo sua internet. Ou dependendo do plano, o seu gamemode pode estar utilizando muito processamento do servidor do seu provedor. Por isso que é recomendado utilizar uma hospedagem de qualidade.

Olá, tenho algumas dúvidas.

Como troco os ifs das minhas verificaçoes pra switch? se possivel um exemplo simples com IsPlayerAdmin só pra entender a funcionalibidade

Outra duvida, uso static ao inves de new dentro de funcoes que acabam quando sao executadas, tipo em comandos? ou seja news apenas para variaveis globais que utilizo em diversas partes do gm?

Desde ja, agradeço.
sobre switch veja a documentação aki: https://sampwiki.blast.hk/wiki/Control_Structures#switch ele deve ser usando quando você verifica na estrutura uma função ou variável que retorne mais de um valor.