Estou realmente empenhado no projeto VCNews (apelido). Esta’ muito interessante desenvolver esse projeto, a quantidade de informacao colida e manipulada e’ realmente grande. Nao estamos apenas lidando com Twitter mais. E so’ o Twitter gera muita, mas muita informacao para ser manipulada. O que e’ muito bacana, trabalhar em algo que tem ser performatico.
- drive do twitter 100% ok com as novas regras da api deles
- manipulacao de usuarios, status e tags do twitter melhorada
- gerenciamento interno de tags e links funcionando
- agrupamento de instrucoes no drive de banco. Toda operacao feita no VCNews nao ira’ na mesma hora ao banco de dados. Recurso novo do UDB. Depois falo sobre isso.
- comecei a manipulacao de noticias como Yahoo! News
E para isso funcionar a plataforma (Universe) teve de ser melhorada, o que foi muito bom. Podemos contar agora com Threadings melhoradas e com auto-balanceamento de carga.
UDB tambem foi melhorado. Para resumir, ele cria uma lista de instrucoes para dar ao banco de dados que ele esta’ conectado, por exemplo o MySQL (o que usamos no VCNews), e cria um “mock” para alguma busca ou qualquer outra instrucao que devera’ trazer aquele dado. Com isso usamos menos carga na rede com o banco de dados e ao mesmo tempo, fazer um insert ou select para cada view/acao nao me parece muito inteligente se podemos deixar em um processo mais rapido.
Performance
Sou a favor de performance sempre no maximo possivel. Para mim performance nao e’ apenas ter o resultado mais rapido, mas tambem usar menos recursos, ou seja… Economizar.
Menos uso da CPU, faz com que adiante a entrada do modo ocioso, salvando ai alguns watts. Imagine isso em uma grande escala. Voce esta’ salvando tempo e dinheiro. Ate’ mesmo em um notebook. Esses “watts” economizados serao a diferenca entre acabar a bateria em 4 horas ou em 4 horas e 30 minutos, por exemplo.
Algumas coisas que gosto de comentar sobre isso:
- Evitar polling. Serio pessoal. Polling e’ ruim. OK, existem algumas coisas que com polling e’ “melhor” de se fazer. Porem o abuso desta tecnica e’ realmente horrivel para performance. Tente fazer algo com msgs. Um exemplo de software que abusa ou abusava deste recurso, o gksu. Ele chega a checar mil vezes por segundo se existem dados em um pipe. Meio exagerado nao e’?
- Agrupar timers sempre que possivel e usar um para realizar varias tarefas. Nunca um timer para cada status ou alguma coisa que voce esta’ usando. Assim voce economiza em chamadas no cpu deixando o ocioso por mais tempo.
- Pensar em usar linguagens de alto nivel. Elas sao mais rapidas no desenvolvimento, porem a performance e’ muito abaixo de uma linguagem como C. Nao estou de olho no “quadro de luz” de cada linguagem script. Porem prefira Python a Ruby. Java e Visual C#… O que falar destes. Ultima vez que dei uma olhada, as duas ficavam bem parecidas. E gastavam mais que os testes usando python e ruby juntos.
Um cpu ocioso consome em media 1 watt em media, claro depende do fabricante/modelo, em carga total leva uma media de 34watts e em usa meia carga tem uma media de 24watts. Se voce levar para calcular algum processo em 1 segundo com potencia maxima do cpu voce ira’ usar 34watts e se fizer em metade da carga levara’ o dobro de tempo, ou seja… 2 x 24 = 48watts.
Gostou do assunto? Um site que recomendo e’ http://www.lesswatts.org

The Day Shift by pg.lost





Parabéns pelo artigo! Realmente este tema é muito interessante. Por favor, continue escrevendo!
[]‘s, HB!