Arquivo de Abril de 2008

O fim das locadoras de vídeo (parte 2)

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.

3 comentários 22 de Abril de 2008 às 09:19 Thiago

Otimização

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! :-)

3 comentários 11 de Abril de 2008 às 18:31 Thiago

Incêndio

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. :-)

Adicionar comentário 10 de Abril de 2008 às 10:37 Thiago

Resenha: Final Fantasy X (PS2)

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:

  • Summons não são muito úteis. Só valem a pena mesmo pelos “Limit Breaks”.
  • Blitzball. Apesar de ter entendido bem rápido como funciona (e de ter ganhado a primeira partida, pela primeira vez, de 3 a 0, sem Jecht Shot) o jogo é muito chato! Para quem não conhece é um handball em turnos.

    4 comentários 9 de Abril de 2008 às 09:07 Thiago


Calendário

Abril 2008
S T Q Q S S D
« Fev   Mai »
 123456
78910111213
14151617181920
21222324252627
282930  

Minhas Publicações Recentes

Publicações por Mês

Estatísticas

Meta