Tempo de busca variando

3 respostas
makecio

Ola pessoa. Bolei uma consulta no meu projeto , onde o usuario digita o cpf , e eu retorno numa area de texto um relatorio com os dados do dono do CPF.

Esta tudo funcionando certo. O que acontece é que quando eu inicio o programa pela primeira vez e faço a primeira busca ele demora +/- de 1 a 2 segundo pra retornar o relatorio, e após isso todos as consultas são feita bem rapido instantaneamente.

Isso ta certo? a primeira busca demora mesmo? ou pode estar algo errado?

3 Respostas

E

Programas em Java costumam ter esse problema de “demorar para pegar”, como se fosse um carro com motor frio (a álcool), logo pela manhã.
Você sabe por que isso ocorre?

É que o compilador Java só gera os arquivos .class (que são juntados em arquivos .jar), e o código contido nesses arquivos:

a) Precisa ser carregado para a memória quando são chamados (isso é feito só na hora em que são necessários);

b) Arquivos .class contidos em arquivos .jar levam um certo tempo para serem descompactados;

c) Na primeira vez em que o código de um .class é executado, ele é tipicamente interpretado (em vez de ser compilado), e isso leva ainda mais algum tempinho;

d) E há mais um outro tempo que o Java leva para pegar os bytecodes, depois que foram interpretados, e foi determinado que é necessário transformar os bytecodes em código de máquina. Isso é o tempo da “compilação just-in-time”.

Uma vez que o “motor pegou”, então o Java executa as coisas bem mais rápido, pois está executando código de máquina, exatamente como um programa C++ ou Delphi ou Objective-C. Mas na primeira (ou talvez na segunda ou terceira vez) ele leva algum tempo.

E

Você já deve ter ouvido falar do parâmetro -Xcomp que você pode passar ao java.exe para que ele, ao carregar uma classe, já compile o código em vez de interpretá-lo pela primeira vez.

O problema, se você usar esse parâmetro, é que você pode ter uma desagradável surpresa - seu programa começa ainda mais devagar (isso é que ele acaba compilando tudo agressivamente, mesmo coisas que serão executadas apenas uma vez e depois descartadas), e quando o “motor pegou”, as transações são executadas mais lentamente, em vez de serem executadas mais rapidamente. Para agravar o problema, o programa acaba usando ainda mais memória.

Conselho: não use esse parâmetro -Xcomp. Ele normalmente não vale a pena (apenas para você fazer benchmarks mais reprodutíveis).

makecio

Obrigado pela boa explicação amigo.

Ficou mas claro e amplo o conhecimento.
Não estou usando este tal metodo mencionado, e nem vou usar. ^^

Teria algo que posso fazer pra melhora o desepenho?

Quando faco o get de todo o formulario armazeno tudu em uma lista e mando o modelo para o metodo da class que esta responsavel a fazer a query.
Voce acha que isso pode tbm ta de algum modo deixando mas lento?

Pois achei que usando a lista facilitou meu trabalho pois o formulario de certa forma e um pouco grande.

Criado 9 de novembro de 2010
Ultima resposta 9 de nov. de 2010
Respostas 3
Participantes 2