Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Otimizar uso da memória e do processamento

Primeiramente, bom dia, boa tarde, boa noite ou boa madrugada a todos que estão lendo minha dúvida. Terminei de assistir a mais essa maravilhosa aula da Alura, achei o conteúdo super interessante e didático. Contudo, ao longo da aula surgiu uma dúvida, ou melhor, duas.

Contexto: durante a aula o professor utilizou uma lista com uma matriz para armazenar todas as informações do cenário, como locais que possuem paredes e comidas. Até aí tudo bem, agora imagine que eu esteja desenvolvendo um jogo 2d e nele a câmera deve se movimentar. Além disso, ele possui uma grande matriz, como uma matriz de 100 linhas por 100 colunas ou até mesmo uma de 1000 linhas por 1000 colunas. Dessa forma seria plausível pensar que algumas, ou muitas, informações do cenário não estariam sendo vistas pelo jogador, ou seja, estariam além da câmera. Desse modo, o computador estaria processando todas as informações da matriz, porém, somente algumas seriam efetivamente utilizadas pelo jogador.

Pergunta 1: dado o contexto, como eu poderia reduzir o trabalho do processador? Criar uma função ou um novo script responsável por avaliar quais seriam as informações efetivamente vistas pelo jogador e mandar o processador computar apenas essas informações seria uma solução eficaz?

Pergunta 2: no mesmo contexto o computador ficaria com uma lista gigantesca na memória o que ocuparia grande espaço de armazenamento e deixaria o mesmo mais lento. Como seria possível reduzir a quantidade de armazenamento ocupado na memória ran de um computador? Utilizar uma lista pequena, a qual possui somente as informações efetivamente usadas pelo jogador, e ficar alterando essa lista a cada movimentação da câmera que o jogo realiza seria uma solução eficaz?

Agradeço desde já a atenção, obrigado.

1 resposta
solução!

Boa tarde, em termos gerais nunca irá existir uma "solução única", realmente cada caso é único pois quando se trata de armazenamento e performance tem muitas coisas a se considerar além de "código", tem banco de dados, conexões com a rede, resposta dos drivers, entre tantos outros que variam de dispositivo para dispositivo, os dados de análise que você conseguiria no seu dispositivo de desenvolvimento não serão os mesmos dos outros dispositivos que usarão sua aplicação após ela estiver em produção, nesse passo que é importante você ter logs para fazer uma analise de como a aplicação se comporta e aí ver o que está "engasgando" na sua aplicação e corrigir...

Para esses aspectos especificamente, o estudo recomendado é de algoritmos, nesse tema você vai aprender diferentes tipos de soluções para diferentes tipos de casos, e aí já proficiente no tema você saberá que solução usar para cada caso :D