Analisando 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 de desempenho direita até que você testá-los.

A seguir estão algumas questões que você deve ter em mente quando se considera os 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 vendedores têm ampla liberdade na implementação do container EJB. Seus requisitos se concentrar nos resultados de 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 colegas de trabalho de codificação 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

# 8226; 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 - ou seja, usando interfaces locais contra interfaces remotas ou fazendo beans de entidade objetos de granulação grossa.

# 8226; 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 a sua capacidade de tirar proveito de transações gerenciadas por contêiner EJB.

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ário para invocar 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.

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, em seguida, tentar 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 a execução de uma atualização em uma interface remota e uma interface local?
  • Qual é a diferença entre a atualizaçã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á influenciado por: a) o driver JDBC que você choose- b) se deve ou não usar pooling- conexão de banco de dados e c) a eficiência de suas implementações do bean de entidade e o bean de sessão. Você provavelmente será surpreendido por alguns dos resultados que obtém - testes como estes têm uma maneira de desafiar suas suposições sobre o desempenho de 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 em melhorias significativas podem ser feitas. Esta observação foi feita com bastante frequência que levou à criação da regra 80-20 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.

menu