Ano passado escrevi um artigo sobre locadoras de vídeo na internet.
Hoje vi o seguinte site, que entrega vídeos aqui em BH:
http://www.filmefacil.com.br/
Só não vou alugar aí porque fica em R$8,00 a locação e taxa de entrega de um DVD.
E a 3 quarteirões da minha casa há uma locadora que aluga qualquer DVD por R$1,00.
O jeito é continuar esperando.
22 de Abril de 2008 às 09:19
Thiago
Eu gosto muito quando tenho a oportunidade de otimizar um programa.
Precisamos realizar testes de carga numa aplicação servidora, então fui incumbido de modificar o programa cliente de modo que ele envie uma série de requisições para o servidor o mais rápido possível.
Fiz uma implementação bem direta e o resultado: Com 100 threads rodando minha máquina “agachava” e logo logo estourava a memória. Não estava bom o bastante.
A razão disso foi que a aplicação cliente não foi projetada para ter desempenho, pois normalmente faz apenas poucas requisições e termina, então eu não me preocupei com gasto de memória ou de tempo, já que ninguém iria notar mesmo, e fiz um projeto caprichado. Até demais.
Tenho a tendência de criar classes demais, entupir o programa com diversos níveis de abstrações e utilizar todos os design patterns que eu agüentar.
Código bonito, extremamente flexível e lento. Uma questão importante é avaliar se a abstração realmente será benéfica. Por exemplo, num dos pacotes lógicos da aplicação, relacionei as classes de tal forma que incluir uma classe nova nesse pacote seria extremamente simples, sem a pessoa precisar de nenhum conhecimento das outras camadas da aplicação. Muito legal, exceto por um detalhe: só surgirão novas classes nesse pacote de cinco em cino anos, e isso se é que vão surgir novas. Então, muito esforço por pouca coisa.
Rodei um profiler na aplicação (sempre precisamos medir para saber onde o gargalo está, não é mesmo?) o TPTP do projeto Eclipse. A instalação não é amigável, mas funcionou. O profiler mostrou que eu estava criando milhares de objetos pequeninos, o que consumia tempo e memória.
O que fiz? Eliminei as abstrações. Nada de referências, delegações e indireções. Aproveitei alguns objetos mais de uma vez. Evitei criar objetos dentro de loops. Matei umas 10 classes. O engraçado é que o código de algumas outras ficou bem mais simples e legível. É… serve para aprender que nem sempre um nível de abstração a mais torna as coisas mais compreensíveis.
Testei o código e ficou muuuuuuito mais rápido, até assustei-me! Agüentou 100 threads sem nem chegar a 100% de uso da CPU e tinha memória de sobra na minha máquina. Reduzi em 50 vezes o número de objetos que a aplicação criava.
Ainda assim, não ganha da vez, quando trabalhava no laboratório Synergia, onde consegui um ganho de performance de 32.000% em um método de exibição de relatório, hehehe! Aquela sim causou comoção!
11 de Abril de 2008 às 18:31
Thiago
Aviso para as pessoas: não ativem o sistema de alerta de incêndio à tôa.
O alarme ligou há pouco tempo atrás e ninguém se moveu.
E eu espero que nada esteja pegando fogo.
10 de Abril de 2008 às 10:37
Thiago
Terminei Final Fantasy X recentemente. Algumas observações sobre o jogo:
Avaliação geral:
- Perfeito para quem gosta de RPGs de console com muita ênfase em história, mas é extremamente linear.
- Foi o único Final Fantasy que suportei até o fim
- Gostei, é bom e recomendo!
Pontos positivos:
- Foi o primeiro Final Fantasy que consegui terminar. Nos outros sempre chegava num ponto em que perdia a paciência.
- História simples, mas os personagens são cativantes. Além disso o mundo é grande e os eventos têm bastante consistência, não ocorrendo nada absurdo.
- Sphere Grid. É um sistema de evolução muito bacana. Pegar o avanço de nível e transformá-lo em mini-game é uma idéia brilhante.
- O jogo é enorme. Levei quase 60 horas para terminar e mesmo assim deixei de fazer muuuuuuuuuuuita coisa. Tem bastante conteúdo para satisfazer os jogadores mais hardcore.
Pontos negativos: