CDX usando TAGs ou Näo

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

Moderador: Moderadores

Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

CDX usando TAGs ou Näo

Mensagem por Luciano Bonfim »

Quando migrei para DBFCDX para näo ter que alterar todos os meus programas eu deixei igual ao NTX sem usar TAG, ou seja:

Código: Selecionar todos


use arquivo
index on campo1 to i1
index on campo2 to i2
index on campo3 to i3
set index to i1,i2,i3

com isso é criado 1 arquivo CDX para cada índice, em vez de apenas 1 CDX com 3 índices dentro. isso facilitou minha vida pois nos meus programas eu continuo a referenciar o índice usando set order e näo precisei mexer em nada.

Código: Selecionar todos


select arquivo
set order to 2
seek ...

set order to 3
seek..

A minha pergunta é: o que irei ganhar se modificar meus fontes para aceitar apenas um arquivo de índice para cada DBF com N TAGs dentro dele? ganho em velocidade? ganho em memória?

Em tempo: meu sistema hoje tem 95 DBFs e 163 CDXs

utilizo xharbour 1.0.0 + GTWVW + HWGUI

Muito Obrigado
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

ganho em velocidade? ganho em memória?
Moral da história: Vc está sentado numa Ferrari, andando só a 80 KM/h.
Acredito que um ligeiro ganho em memória, além é claro de economizar nos gerenciadores de arquivo. Em vez de ter de gerenciar 163 indices, seu sistema passa a gerenciar apenas 95, ocasionando creio eu, tb um ligeiro aumento na performance.
A mudança no código não será muita se optar por usar as ordens, dentro dos indices. Troque os

Código: Selecionar todos

Set order to indice
por

Código: Selecionar todos

OrdSetFocus(ordem)
e nunca se esqueça de deletar os .CDX antes de reindexar, senão ele vai crescendo, crescendo, crescendo ... e bagunçando tudo.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
gvc
Colaborador
Colaborador
Mensagens: 1270
Registrado em: 23 Ago 2005 10:57

Mensagem por gvc »

O set order funciona.
Eu particularmente uso dbsetorder.

Seu ganho será de:
- velocidade de acesso / atualização dos indices. o cdx é mais rápido.
- menor uso de memoria do micro. vc abre menos arquivos.
- O CDX é mais estável.

Com mais espaço de memória, seu sistema trabalha "melhor".
"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}
Avatar do usuário
Luciano Bonfim
Usuário Nível 3
Usuário Nível 3
Mensagens: 414
Registrado em: 23 Ago 2007 09:34
Localização: Rio de Janeiro / São Paulo
Contato:

Mensagem por Luciano Bonfim »

funcionou que é uma maravilha, agora só tenho um CDX para cada DBF e nem precisei mexernos fontes, conforme disse o GVC o set order continua funcionando...

Muito Obrigado
Muito Obrigado,

Luciano Bonfim de Azevedo
www.bonfim.com.br
luciano@bonfim.com.br
www.linkedin.com/in/lucianobonfim
Skype : lucianobonfim
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Mensagem por alaminojunior »

o set order continua funcionando...
Particularmente prefiro as funções, são mais claras. Além do que, se precisar criar um segundo arquivo de índice, como vai ficar ?
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
ederxc
Usuário Nível 4
Usuário Nível 4
Mensagens: 619
Registrado em: 15 Set 2006 08:40
Localização: Pedreira -SP-

Mensagem por ederxc »

alaminojunior escreveu:
o set order continua funcionando...
Particularmente prefiro as funções, são mais claras. Além do que, se precisar criar um segundo arquivo de índice, como vai ficar ?
Uia , vai ficar na mesma , cria o arquivo de indice indexa e chama ele na ordem em que ele estiver , uai uai uai , não entendi esssa não , mexicano,mulçumano, espanhol !
C:\Xharbour\Xdev\Fw\VSX
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Eu sempre uso DBSETORDER() e funciona normal no DBFCDX, alias o desempenho e praticidade com DBFCDX não tem comentarios, alem de poder usar as novas funções da SIX em DBFCDX em xharbour.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Responder