Performance ClientDataSet (Append)
10/11/2009
0
Trata-se de um projeto console que precisa ser rodado no linux, então faço a compilação no Kylix 3.
Aí está o meu problema, a inserção do registro no ClientDataSet está muito lenta. Por exemplo, gasto 1 seg para selecionar os registros no banco (+/- 7.000) e 5min para armazena-los no ClientDataSet. Isso ocorre apenas para o projeto compilado no Kylix, o projeto compilado no Delphi é rápido.
Alguém já passou por um problema semelhante?
Valeu!
Paulo Pontes
Post mais votado
08/12/2009
identificamos o problema aqui. É o FieldByName e não o Append. Fizemos a substituição da função FieldByName pela propriedade Fields[n] e o problema foi resolvido.
Para vocês terem uma idéia tinhamos um processo aqui que gastava 18:46 min (com FieldByName) e passou a gastar 20 seg (com Fields[n]).
Não chegamos a avaliar a implementação do Kylix para a função FieldByName. E como o Kylix foi descontinuado vamos avaliar se continuaremos com ele, pois poderemos ter novas surpresas.
Obrigado pelas Dicas.
Paulo Pontes
Mais Posts
11/11/2009
Guinther Pauli
Tente desativar o log de alterações do CDS antes das operações:
ClientDataSet1.LogChanges := False;
...
Att,
Guinther Pauli
guinther.pauli@gmail.com
Editor Geral Revista ClubeDelphi
Editor Geral Revista .net Magazine Brasil
Microsoft Certified: MCP,MCAD,MCSD.NET,MCPD,MCTS
Delphi Certified: 3,5,6,7,2005,2006,Web,Kylix
http://guintherpauli.blogspot.com
http://twitter.com/guintherpauli
12/11/2009
Paulo Pontes
já fiz esse teste e não adiantou... tentei o MergeChangeLog a cada 100 registros incluídos, mas também não adiantou...
Será limitação do ClientDataSet do Kylix? (apesar de perceber que a compilação feita no Delphi também não tem boa performance não, mas a do Kylix que eu preciso é bem mais crítica).
17/11/2009
Paulo Pontes
Faço um loop em um ClientDataSet e dentro desse loop tenho uma pesquisa 'FindKey' em outro ClientDataSet (para executar alguns procedimentos), enquanto na compilação feita no delphi o tempo gasto foi de 1min na compilação do Kylix o tempo gasto foi de 21min.
Tenho alguma outra alteranativa para compilação desse projeto a não ser o Kylix?
17/11/2009
Anderson
O servidor linux esta instalado em alguma maquina virtual ?
Durante o processamento o servidor linux não está rodando aplicações concorrentes (backup, atendendo outros usuários, etc.) ? Esta fazendo uso da memória swap ?
Indicadores de processamento costumam diminuir muito a performance em função da atualização de tela. Se for o caso, coloque para ser exibido somente a cada 10% processado ou mais.
Chegou a utilizar o disablecontrols para desconectar da parte visual durante o processamento ?
Ao rodar a aplicação, analisou os processos do linux que estao rodando (comando top) ?
17/11/2009
Paulo Pontes
na verdade trata-se de um projeto console e o servidor linux é bem mais parrudo que a máquina windows, por isso continuo achando que o problema é a compilação do Kylix...
Valeu!!!
Clique aqui para fazer login e interagir na Comunidade :)