Analisando o desempenho em enterprise javabeans
Analisando o desempenho é provavelmente uma das tarefas mais complexas na concepção de qualquer aplicação. É uma ciência imprecisa porque há muitos fatores que entram em jogo. Estes são aumentadas em Enterprise JavaBeans (EJB) aplicações, onde o desempenho depende muito da implementação do container EJB que você usa. A linha inferior é que você não pode saber se você está fazendo as decisões corretas de desempenho até que você testá-los.
A seguir estão algumas questões que você deve ter em mente quando se considera problemas de desempenho:
- Nem todos os contêineres EJB são criados iguais. Embora cada container EJB deve estar em conformidade com a especificação EJB, os fornecedores têm ampla liberdade na implementação do container EJB. Seus requisitos se concentrar sobre os resultados das operações, e não sobre a eficiência de uma operação. Alguns fornecedores vão fazer um trabalho melhor com diferentes partes de um container EJB. Você deve determinar onde a eficiência pode ser adquirida em um container EJB e onde gargalos de desempenho vão ocorrer. A única maneira de saber que com certeza é a de experimentar antes de comprar. Mesmo depois de comprar uma solução, as principais decisões de design, como se deve ou não usar beans de entidade EJB, devem ser testados.
- O desempenho pode depender da eficiência da sua aplicação. Existem regras gerais que você pode usar para ajudar a determinar qual aplicativo projetos são melhores do que outros. Mas essas diretrizes podem ser facilmente invalidado com uma implementação desleixada. A melhor maneira de garantir que você evitar implementações desleixado é realizar regularmente revisões de código - que é quando você se sentar ao redor com todos os seus codificação colegas de trabalho e tê-los rever o seu trabalho - durante o seu projeto EJB. Você deve concentrar seus revisões de código na análise da origem e garantindo que ele é ao mesmo tempo bem desenhado e eficiente. As revisões de código oferecem uma grande oportunidade para os programadores a aprender uns com os outros.
- Desenvolver um protótipo para testar suas hipóteses de desempenho. Aqui está um cenário de exemplo. Como um desenvolvedor de aplicativos EJB, você deve decidir logo sobre se deve ou não usar beans de entidade para gerenciar a interação com um banco de dados. As duas opções básicas são
• Criar beans de entidade para gerenciar a interação de banco de dados. beans de entidade pode simplificar sua interação com o banco de uma perspectiva de programação de aplicações. Mas eles também podem exigir uma penalidade de desempenho. Alguns dos que a pena pode ser controlada da maneira que você implementar beans de entidade - isto é, usando interfaces locais contra interfaces remotas ou fazendo beans de entidade objetos de granulação grossa.
• banco de dados de código JDBC chama diretamente em beans de sessão e evitar o uso de beans de entidade completamente. JDBC pode ser mais difícil de trabalhar do que usando beans de entidade com persistência gerenciada por contêiner. Este curso também pode comprometer sua capacidade de tirar proveito de transações gerenciadas por contêiner EJB.
Video: Enterprise JavaBeans 3.2 with Examples
Para determinar qual dos dois cursos é mais apropriado, você pode executar um teste simples:
1. Criar um bean de entidade e um bean de sessão que tanto executar operações no mesmo conjunto de dados de um banco de dados.
2. Escreva um programa simples que mede a quantidade de tempo necessária para chamar um conjunto de inserções, atualizações, consultas e alterações para o banco de dados.
Este segundo programa deve chamar o bean de sessão para um teste e o bean de entidade para outro teste - realizando o mesmo conjunto de operações em cada um.
Video: Enterprise Java Beans Part1
3. Analisar os resultados para determinar se o desempenho será um problema.
Se você quer uma análise de desempenho mais refinado, você pode cronometrar etapas individuais - para identificar a operação mais cara - e tente modificar essas operações para gerar ganhos de desempenho.
Para um bean de entidade, você pode querer medir o desempenho nas seguintes operações:
- Quanto tempo demora para obter uma referência a uma interface remota ou de uma interface local?
- Qual é a diferença de desempenho entre executar uma atualização em uma interface remota e uma interface local?
- Qual é a diferença entre a actualização várias linhas em um banco de dados JDBC e realizando uma atualização em várias linhas usando o método de casa de um bean de entidade?
As respostas a estas perguntas vai ser diferente do container EJB para container EJB e também será influenciada por: a) o driver JDBC que você choose- b) se deve ou não usar pooling- conexão com o banco e c) a eficiência de suas implementações do bean de entidade e o bean de sessão. Você provavelmente vai se surpreender com alguns dos resultados que obtém - testes como estes têm uma maneira de desafiar suas suposições sobre o desempenho dos beans de entidade.
Quando você está ajustando um EJB para o desempenho, não faça mudanças aleatórias. Em vez disso, concentrar sua atenção sobre as etapas do aplicativo que custam mais em termos de desempenho.
Nota:medições de desempenho geralmente revelam que um processo de negócio tem apenas um ou dois pontos onde melhorias significativas podem ser feitas. Esta observação foi feita com bastante frequência que levou à criação da 80-20 regra Pareto. Essa regra estabelece que 80 por cento do tempo de execução de um programa é devido a 20 por cento do código. Seu objetivo deve ser o de identificar quais 20 por cento do código é mais caro em termos de recursos de sistema e se concentrar em otimizar a parte.