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: 1309
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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 1309
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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 8029
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 2 vezes
Curtiram: 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: 1309
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: 20420
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP
Curtiram: 1 vez

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, multithread, gtwvg, fivewin 25.12, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui), (hmg3), (hmg extended), (oohg), PNotepad, ASP, (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: 1309
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: 3110
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