#################################################################
# Ministério da Saúde Adverte: Lá vem mais um post maior que o
convencional
# Assunto: Performance no Flex
#################################################################

Eu falei isso da performance porque eu fico intrigado como nós
insistimos em nos preocupar com isso onde não é necessário e, pior,
não olhamos para isso onde é necessário. Primeiro quero deixar claro
que não me refiro a você (Rafael), mas a nós programadores em geral.
Estou apenas usando o seu comentário para falar sobre algo que eu
considero pertinente.

Logo que damos os primeiros passos em programação somos alertados
sobre essa palavrinha (performance) que vai nos perseguir pelo resto
de nossas vidas como programadores. Seja nos tutoriais na internet,
seja na faculdade, as pessoas nos ensinam que Loops e if's dentro de
Loops afetam a performance e por isso nós devemos tomar cuidado. Mas
eu tenho algumas ressalvas com relação a isso.

Em seu livro de Refactoring Martin Fowler apresenta alguns
Refactorings que a maioria dos programadores estranhariam num primeiro
contato. Ele transforma um if em vários e um Loop em dois para fazer
basicamente a mesma coisa. Por que? Para melhorar a legibilidade do
código. Ele recomenda que programemos para a Legibilidade porque que
ao programarmos para a performance o nosso código será mais difícil de
entender. E uma vez que nunca sabemos onde teremos problemas de
performance a não ser quando fazemos testes mais reais e geralmente
apenas 5% do código precisa ser otimizado é melhor deixar isso para
ser refatorado depois do que comprometer a legibilidade dos outros 95%
do código por causa de preocupação exagerada com a performance.

Já vi várias pessoas de Flex se preocupando com um Loops, ifs, parse/
trafego de XML ou coisa parecida. Bem, eu trabalho com Flex desde a
versão 1.5 e nunca tive problemas com nenhum destes pontos. Além
disso, trabalhar com XML no Flex é rápido o suficiente. Agora, existem
inúmeros outros pontos específicos do que Flex que merecem a tenção
mas são pouco mencionados.

1. Item Renderers
2. States
3. Containers
4. Styles

No primeiro caso não é incomum ver as pessoas usar Containers que
consomem bastante processamento e aninharem diversos outros elementos
dentro do ItemRenderer. Alguém que já rodou o Flex em modo de Debug e
prestou atenção neste fato deve ter percebido que muitos métodos dos
ItemRenderers são executados inúmeras vezes quando fazemos o scroll no
componente ou até no Item RollOver/Item RollOut. Portanto, se o seu
componente que define o ItemRenderer for complexo e você tiver muitas
linhas no seu ListBased Control é provável que as coisas comecem a
ficar lentas na sua interface.

Sobre o segundo eu já falei algumas vezes.
http://groups.google.com/group/flexdev/msg/99ba750de5293fc4

No caso dos Containers, além do famoso CreationPolicy, existe o fato
de que algums Containers oferecem performance melhor que outros e é
preciso conhecer isso as vezes.

No caso dos Styles, quando você muda estilos em tempo de execução
usando o setStyle você também pode deixar sua interface mais lenta
principalmente dependendo do que você está modificando nos estilos e
quantas propriedades você está mudando.

Além disso, se você não conhece bem o Framework de componentes do SDK
é comum você ter problemas de performance com os seus componentes.
Isso sem contar os inúmeros if (x == null) return que você terá que
espalhar pelo seu programa.

Bem, acho que seria possível detalhar mais cada um dos itens que eu
mencionei como problemas potenciais de performance no Flex, mas creio
que já escrevi demais. A principal mensagem que eu pretendia passar
era o fato que não devemos nos preocupar excessivamente com a
performance e principalmente ser um pouco céticos com relação aos
antigos conselhos sobre Loops, ifs e coisas do tipo. A não ser que
você discorde do Martin Fowler sobre a importância de legibilidade.

[]'s
Beck Novaes


On Apr 16, 9:25 am, "Rafael Gomes Dantas" <[EMAIL PROTECTED]> wrote:

> Só toma cuidado com a performance. Não deve ser agradável usar isso aí com
> datagrids muito cheios...

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a