Lentidão na criação de indices em HARBOUR!

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Lentidão na criação de indices em HARBOUR!

Mensagem por ANDRIL »

Pessoal, passei meu sistema Clipper52/Blinker para Harbour 3.2 modo CONSOLE. Sempre usei DBFCDX, porem em clipper usava a extensao IDX. No Harbour, deixei como CDX mesmo. Não uso TAGs.

O que notei foi uma grande demora para criação dos indices em Harbour, o que em Clipper demorava em torno de 45seg, em Harbour demorou mais de 5 min.

Será que fiz algo errado na criação dos indices para deixá-los tão lentos? Tem alguma forma de deixá-los rápidos na criação como em Clipper.

Código: Selecionar todos

       REQUEST DBFCDX 
        RDDSETDEFAULT("DBFCDX")
        Extensao=".CDX"
O cliente já ficou com o pé atrás, visto que sempre que se faz algo como UPGRADE espera-se que melhore!

Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lentidão na criação de indices em HARBOUR!

Mensagem por JoséQuintas »

A única coisa que poderia ficar mais lenta no Harbour seria atualização de tela.
Por acaso tem gráfico de processamento?
Se tiver, ajuste pra não ficar atualizando a tela a cada registro.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Lentidão na criação de indices em HARBOUR!

Mensagem por ANDRIL »

José, tem sim. Realmente era o uso de função de andamento na criação do índice. O interessante é que a mesma função no Clipper roda bem, já no Harbour apresenta tal lerdeza!

Fiquei aliviado quando tirei a função e ficou até mais rápido que em Clipper. Agora vou ver como criu uma alternativa, para informar ao usuário que o sistema esta trabalhando, por que quando o índice for grande eles sempre pensam que o sistema "TRAVOU!".

Obrigado, até+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lentidão na criação de indices em HARBOUR!

Mensagem por JoséQuintas »

Uma alternativa simples é atualizar somente a cada um segundo.

Se quiser minha rotina com cálculo de tempo.
Em harbourdoc.com.br, user interface, www.harbourdoc.com.br, GrafTime()
link direto: http://www.harbourdoc.com.br/show.asp?s ... GrafTime()

Basicamente pra usar poderia ser:

Código: Selecionar todos

GrafTime( "Fazendo reindexação" )
INDEX ON .... TO ... EVAL GrafTime( RecNo(), LastRec() )
ou

Código: Selecionar todos

nAtual := 0
nTotal := LastRec()
GrafTtime( "Fazendo processamento" )
DO WHILE .NOT. Eof()
   GrafTime( nAtual++, nTotal )
   SKIP
ENDDO
A rotina usa as duas últimas linhas da tela para o gráfico.

Nota:
Já comentei por aqui, a coisa mais difícil de eu fazer é reindexar.
Se ocorrer uma vez cada dois meses, pra mim ainda considero muito, já que é bem eventual mesmo.
Sempre foi assim, desde os tempos do Clipper.

Aqui uso um cálculo de LastRec() + ( LastRec() * Qtd. índices ), somando de todos os arquivos, pra ter um gráfico da reindexação total, e não individual. (a reindexação também faz o "pack")
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Lentidão na criação de indices em HARBOUR!

Mensagem por Itamar M. Lins Jr. »

Use comando index com EVERY! mais simples e vai ficar muito rápido.
Só o every ou outra forma similar; chamar o gráfico a cada n registros processados n pode ser 50 ou 100...
Evite chamar o gráfico a cada skip do dbf.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Lentidão na criação de indices em HARBOUR!

Mensagem por ANDRIL »

Pessoal, obrigado pelas dicas. Vou fazer alguns testes e reporto aqui.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Lentidão na criação de indices em HARBOUR!

Mensagem por JoséQuintas »

Essa rotina que fiz afeta muito menos a velocidade do que o gráfico a cada registro, porque a demora maior é mesmo atualização de tela e rede.
Mas usando o every junto com a rotina vai agilizar mais ainda, porque reduz a quantidade de cálculos/checagens.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
ANDRIL
Usuário Nível 5
Usuário Nível 5
Mensagens: 1298
Registrado em: 06 Jul 2004 00:44
Contato:

Lentidão na criação de indices em HARBOUR!

Mensagem por ANDRIL »

Usei a claúsula EVAL junto com EVERY usando a mesma função que já usava e funcionou como em Clipper. Realmente em Harbour a atualização da tela demora mais que em Clipper se for atualiza-la a cada registro, mesmo compilando em modo console.

Questão resolvida. Obrigado a todos.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

Lentidão na criação de indices em HARBOUR!

Mensagem por alxsts »

Olá!

Só acrescentando: pode usar o Every a cada 10% dos registros da tabela [ Int( ( LatRec() /100) ) ]
[]´s
Alexandre Santos (AlxSts)
Responder