################################################################# # 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 -~----------~----~----~----~------~----~------~--~---
