domingo, 28 de junho de 2015

Hardcore Devel #20 - MinArena #2

Estamos de volta desenvolvendo mais ainda nossos softwares. E continuamos com o diário do projeto MinArena. Que ganhou algumas novidades esses dias. Vamos conferir os detalhes, e vamos discutir o que aconteceu e porque aconteceu.

#VemProgramador


Agora sim.

Bom, uma das coisas que tem sido sempre um problema, e provavelmente vai continuar sendo um problema para sempre, é a geometria computacional. A geometria de todas as superficies estavam em hardcode.

Hardcode?

Hardcode é quando você coloca dados de objetos diretamente na memória do programa e não em uma especie de arquivo. Imagina você colocar os dados de uma tabela de um banco de dados direto no código. O que isso significa?

Isso significa que, se você quiser reiniciar o programa com alguma nova modificação, você vai ter que compilar o programa todo de novo pra depois rodá-lo, pois ele está carregando os dados direto na memória. Ler um arquivo é essencialmente ler algo do HD e colocar na memória, e é essencialmente isso que você faz quando você manda executar um programa. A unica diferença é como você o faz.

Então eu criei um leitor de geometrias, Ele lê um arquivo que tem que estar formatado corretamente(caso contrário ele não vai nem continuar rodando), E já carrega as geometrias na memória, ou seja, se eu precisar mudar a geometria de alguma superfície, eu apenas mudo o arquivo e não preciso compilar o código todo de novo.

Isso é bom. Obviamente o trabalho de escrever a geometria para depois jogá-la no arquivo continua horrendamente complicada, mas pelo menos não tenho que ficar compilando o código todo de novo. E bom, é mais facil escrever na sintaxe simplificada do arquivo do que descrever a superfície direto em código C++.

Isso resultou na codificação da Gaua. Agora temos que realizar os seguintes passos:
  • Criar um leitor de dados, similarmente ao de geometrias, para ler os dados brutos dos objetos.
  • Criar uma melhor abstração de mensagens para facilitar as modificações na camada de rede.
  • Documentar o código(Trabalho facilitado pelo Doxygen)
  • Terminar de escrever a dissertação que acompanha o projeto.
E por hoje é só!

2 comentários:

  1. Bom, acredito que deve ser mais fácil agora, já que um arquivo pode demorar a compilar, acredito eu, que com essas informações no próprio arquivo deveria demorar ainda mais, não?

    ResponderExcluir
    Respostas
    1. Vamos por partes.

      Popular dados em hardcode vai fazer com que o compilador leve mais tempo processando o código fonte. Ou seja vai demorar mais a compilar. Isso já foi um problema no início da computação. Hoje em dia tudo compila rapidinho.(Óbvio que para uma massa de dados grande essa diferença vai começar a ficar significativa)

      Mas esse é o preço que você pode pagar pelo desempenho. Dados "Hardcodeados" já são inseridos diretamente na memória. É um arquivo a menos para o sistema operacional trabalhar. Quanto mais dados em arquivos externos o seu programa precisa, maior tende a ser a lentidão dele, pelo menos para iniciar. Depois disso deve voltar a funcionar normalmente.

      Ficar acessando arquivos é custoso. A memória principal(RAM) é muito mais eficaz que a memória secundária(HD). Sendo que para processar o dado, ele sempre vai ser carregado do HD para a memória principal. Isso torna aplicações que ficam fazendo alterações em arquivos mais lentas. A MinArena, em todo o caso, só vai precisar ler qualquer arquivo externo uma vez apenas. É um preço pequeno de desempenho a se pagar pela facilidade de alteração de dados.

      Excluir