Kaarpas Posted December 22, 2018 Share Posted December 22, 2018 Olá, pessoal. Gostaria de saber se element data atrapalha o desempenho do servidor - não para salvar dados como se fosse um banco de dados, somente alguns dados que são atribuidos e depois esquecidos - e se utilizam muita RAM. Link to comment
Other Languages Moderators Lord Henry Posted December 22, 2018 Other Languages Moderators Share Posted December 22, 2018 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
Kaarpas Posted December 22, 2018 Author Share Posted December 22, 2018 (edited) 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 December 22, 2018 by Kaarpas Link to comment
[M]ister Posted December 22, 2018 Share Posted December 22, 2018 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. 1 Link to comment
Other Languages Moderators Lord Henry Posted December 22, 2018 Other Languages Moderators Share Posted December 22, 2018 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. 1 Link to comment
DNL291 Posted December 23, 2018 Share Posted December 23, 2018 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. 1 Link to comment
Kaarpas Posted December 23, 2018 Author Share Posted December 23, 2018 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! 1 Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now