Jump to content

Element data reduz o desempenho do servidor?


Recommended Posts

  • Other Languages Moderators

Depende muito da quantidade de datas que são salvas. É o mesmo que você ficar criando um monte de variável no seu código, cada uma consome um pouco de memória, mas quando são muitas, o consumo tende a ser bem perceptível.

Link to comment
Quote
4 hours ago, Lord Henry said:

Depende muito da quantidade de datas que são salvas. É o mesmo que você ficar criando um monte de variável no seu código, cada uma consome um pouco de memória, mas quando são muitas, o consumo tende a ser bem perceptível.

Então se eu for fazer um draw por exemplo, a cada frame o cliente buscar uma conexão com o banco de dados pra informar um mesmo valor que seria informado quando ele entrasse? PS: Conexão com um SQLITE hospedado na mesma máquina do servidor, não por MySQL. E se não for, MySQL é mais viável que SQLite?

Ahh, e uma dúvida também. Se eu setar um element data do lado cliente, o element data ocupará a memória do cliente, né?

Edited by Kaarpas
Link to comment
36 minutes ago, Kaarpas said:

Ahh, e uma dúvida também. Se eu setar um element data do lado cliente, o element data ocupará a memória do cliente, né?

Se você setar no lado servidor, ocupará também no lado cliente, se setar no lado cliente, ocupará também no servidor. Na Wiki é claro que seu uso deve ser avaliado, pois é algo que consome uso de banda e processamento (já que ocorre toda essa sincronização entre os clientes com o servidor), e dependendo da necessidade sua utilização pode e deve ser substituída por outros métodos.

  • Like 1
Link to comment
  • Other Languages Moderators
4 minutes ago, MaligNos said:

Se você setar no lado servidor, ocupará também no lado cliente, se setar no lado cliente, ocupará também no servidor. Na Wiki é claro que seu uso deve ser avaliado, pois é algo que consome uso de banda e processamento (já que ocorre toda essa sincronização entre os clientes com o servidor), e dependendo da necessidade sua utilização pode e deve ser substituída por outros métodos.

Exato. O setElementData, independente se for feito client ou server-side, sempre será sincronizado com todos os outros jogadores. E essa sincronização consome bastante processamento do servidor.

 

44 minutes ago, Kaarpas said:

Então se eu for fazer um draw por exemplo, a cada frame o cliente buscar uma conexão com o banco de dados pra informar um mesmo valor que seria informado quando ele entrasse?

Totalmente inviável. Conexão com banco de dados não deve ser feito a cada frame, ele é pesado demais para ser feito tantas vezes em curtos períodos de tempo. Além disso, conexão com banco de dados só pode ser feita server-side, e um "draw" só pode ser feito client-side. Ou seja, vc precisaria de um triggerServerEvent a cada frame, que ficaria absurdamente mais pesado ainda.

  • Like 1
Link to comment
  • Moderators

Eu diria que setElementData deve ser usado quando realmente tiver necessidade. Você pode muito bem substituir o uso com tabelas, que seria até o caminho correto do seu projeto em vários casos. Acontece que muitos não sabem as consequências e acaba usando em tudo é conveniente.

Não conheço muito tudo que está por trás dessa função internamente no MTA (até porque não programo C++), mas parece ter uma performance muito pior se comparado ao uso de uma tabela em seu lugar. Fora outra coisa que sempre requer uma atenção do programador (do Scripter no caso) que é o uso de banda. Então caso você decida usá-la, preste atenção no último argumento para não utilizar desnecessariamente a sincronização com o outro lado.

Quote

setElementData ( theElement, key, value, synchronize )

Último argumento destacado em vermelho.

 

  • Like 1
Link to comment
19 hours ago, Lord Henry said:

Exato. O setElementData, independente se for feito client ou server-side, sempre será sincronizado com todos os outros jogadores. E essa sincronização consome bastante processamento do servidor.

 

Totalmente inviável. Conexão com banco de dados não deve ser feito a cada frame, ele é pesado demais para ser feito tantas vezes em curtos períodos de tempo. Além disso, conexão com banco de dados só pode ser feita server-side, e um "draw" só pode ser feito client-side. Ou seja, vc precisaria de um triggerServerEvent a cada frame, que ficaria absurdamente mais pesado ainda.

Sim, eu sei sobre o trigger. Então a melhor opção vai ser por tabelas... Obrigado guys!

  • Like 1
Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...