Bom dia, amigos.
É verdade. Eu uso o xharbour 1.0 simplex que veio com um DBFCDX.LIB de 08/11/2007 e possui 65.024mb de tamanho.
Inicalmente eu só recompilei meu fontes clipper em xharbour, mantendo o .NTX testei por um bom tempo, e agora finalmente converti os bancos de dados para DBF+CDX e o sistema ficou visivelmente mais lento, principalmente em leituras sequencias para relatórios exibidos em tela.
Fiz tudo certo. Antes eu converti os .DBF+DBT para .DBF+FPT, usando o próprio
xharbour.
Alguém passou por algo semelhante e tem alguma orientação a dar ?
Grato,
Gabriel
Xharbour com .CDX ficou + lento q com .NTX
Moderador: Moderadores
Re: Xharbour com .CDX ficou + lento q com .NTX
Mostre como vc cria os arquivos de indices.
Mostre uma parte do fonte que vc verificou que ficou mais lento para poder-mos testar.
Mostre uma parte do fonte que vc verificou que ficou mais lento para poder-mos testar.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
Re: Xharbour com .CDX ficou + lento q com .NTX
Ok, Gvc. Ai vai... Mas estão corretíssimas.
Acredito que o problema é a minha lib DBFCDX com o Harbour 1.00 simplex.
No prog principal eu uso:
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
* Um Recorte da Rotina de Indexação "
DO WHILE .T.
W_ARQ=ARQESTP
USE (W_ARQ) EXCL
IF NETERR()
ALERT(W_ARQ+" inacessivel. Certifique-se q ninguem esta usando o Sistema",,,10)
LOOP
ENDIF
EXIT
ENDDO
DELE ALL FOR EMPTY(REF)
PACK
INDE ON REF+DTOS(BATIM) TAG (ARQESTP0) TO (W_ARQ)
INDE ON STR(NUMLIN,3)+DESREF+REF TAG (ARQESTP1) TO (W_ARQ)
INDE ON STR(NUMGRU,4)+DESREF+REF TAG (ARQESTP2) TO (W_ARQ)
INDE ON REFORI TAG (ARQESTP3) TO (W_ARQ)
INDE ON DESREF+REF TAG (ARQESTP4) TO (W_ARQ)
* A Rotina de leitura e exibição se resume a ler/imprimir"
l=12
Do while .not. eof() .and. ref=tref
if l>55
cabec()
endif
@ l,0 say
@ l,14 say .....
@ l, 31 say ....
l=l+1
skip
enddo
Acredito que o problema é a minha lib DBFCDX com o Harbour 1.00 simplex.
No prog principal eu uso:
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
* Um Recorte da Rotina de Indexação "
DO WHILE .T.
W_ARQ=ARQESTP
USE (W_ARQ) EXCL
IF NETERR()
ALERT(W_ARQ+" inacessivel. Certifique-se q ninguem esta usando o Sistema",,,10)
LOOP
ENDIF
EXIT
ENDDO
DELE ALL FOR EMPTY(REF)
PACK
INDE ON REF+DTOS(BATIM) TAG (ARQESTP0) TO (W_ARQ)
INDE ON STR(NUMLIN,3)+DESREF+REF TAG (ARQESTP1) TO (W_ARQ)
INDE ON STR(NUMGRU,4)+DESREF+REF TAG (ARQESTP2) TO (W_ARQ)
INDE ON REFORI TAG (ARQESTP3) TO (W_ARQ)
INDE ON DESREF+REF TAG (ARQESTP4) TO (W_ARQ)
* A Rotina de leitura e exibição se resume a ler/imprimir"
l=12
Do while .not. eof() .and. ref=tref
if l>55
cabec()
endif
@ l,0 say
@ l,14 say .....
@ l, 31 say ....
l=l+1
skip
enddo
lugab
- sygecom
- Administrador

- Mensagens: 7131
- Registrado em: 21 Jul 2006 10:12
- Localização: Alvorada-RS
- Contato:
Re: Xharbour com .CDX ficou + lento q com .NTX
Olá Gabriel,
Você tem que excluir o INDICE antes de recriar o mesmo.
Você tem que excluir o INDICE antes de recriar o mesmo.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
xHarbour.org + Hwgui + PostgreSql
Re: Xharbour com .CDX ficou + lento q com .NTX
O post do colega sygecom esta correta. Sempre que for criar os arquivos CDX, apague-os primeiro.
Sobre o seu código:
Sobre o seu código:
Código: Selecionar todos
request dbfcdx
rddsetdefault("dbfcdx")
* Um Recorte da Rotina de Indexação "
w_arq := arqestp
use (w_arq) excl
if neterr()
alert(w_arq + " inacessivel. Certifique-se q ninguem esta usando o Sistema",,,10)
return
end
delete all for empty(ref)
pack
if !filedelete(warq)
alert('Impossivel excluir o arquivo ' + warq)
return
end
// Vc cria as tag´s (arqestpX) com parenteses. Não precisa.
index on ref + dtos(batim) tag 1 to (w_arq)
index on str(numlin, 3) + desref + ref tag 2 to (w_arq)
index on str(numgru, 4) + desref + ref tag 3 to (w_arq)
index on refori tag 4 to (w_arq)
index on desref + ref tag 5 to (w_arq)
* A Rotina de leitura e exibição se resume a ler/imprimir"
l := 12
while !eof() .and. ref = tref
if l > 55
cabec()
end
@ l,0 say
@ l,14 say .....
@ l++, 31 say ....
dbskip()
end"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
Re: Xharbour com .CDX ficou + lento q com .NTX
Sim, Sygecom e CVC. Eu já faço isso.
Na iníciorotina principal de indexação eu executo:
RUN DEL *.CDX /S/Q > NULL
Acredito piamente que tem algo de incompatível entre o meu XHARBOUR 1.0 + BORLAND + LIB CD.
Na iníciorotina principal de indexação eu executo:
RUN DEL *.CDX /S/Q > NULL
Acredito piamente que tem algo de incompatível entre o meu XHARBOUR 1.0 + BORLAND + LIB CD.
lugab
Re: Xharbour com .CDX ficou + lento q com .NTX
Eu tenho um sistema pequeno usando CDX e funciona.
Como é pequeno, não dá para contar muito.
Os grandes ainda estão em NTX. (Não deixam eu mudar p/ CDX)
Mas eu vou testar.
Acho que se isso fosse geral já teriam postado muito.
Vamos testar e ver o que acontece.
Como é pequeno, não dá para contar muito.
Os grandes ainda estão em NTX. (Não deixam eu mudar p/ CDX)
Mas eu vou testar.
Acho que se isso fosse geral já teriam postado muito.
Vamos testar e ver o que acontece.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
Re: Xharbour com .CDX ficou + lento q com .NTX
Eu teste com um de 411Mb e a diferença de indexar e correr o arquivo todo não foi tão visivel.
Eu uso a 1.1.0 rev 6095.
Criei os indices cdx, listei, criei os indices ntx, listei. As marcas de tempo variam de acordo com o que estou fazendo na máquina.
Eu uso a 1.1.0 rev 6095.
Criei os indices cdx, listei, criei os indices ntx, listei. As marcas de tempo variam de acordo com o que estou fazendo na máquina.
"TRS-80/Sincler/Apple/PC - Clipper Winter 85, tlink 1.0 [pc 10 MHz - 640K] {NEZ 8000 2Kb RAM}"
{POG - Programação Orientada a Gambiarra}
{POG - Programação Orientada a Gambiarra}
