Velocidade com dbedit filtrado no Harbour

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

Moderador: Moderadores

leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

Velocidade com dbedit filtrado no Harbour

Mensagem por leandromiler »

Estou com um grande problema, pois no meu sistema compilado em harbour, os DBedits que são filtrados, alguns usam filtros de data + filial + cancelado <> 'S' eles ficam extremamente lentos.

A lentidão ocorre quando o usuário pressiona as setas pra BAIXO ou pra CIMA, ou PAGEDOWN ou PAGEUP após o limite do filtro, daí o sistema fica "pensando" e demora pra caramba. Isto ocorreu também quando tentei migrar meu sistema de CLIPPER 53B/cdx para CLIPER 5.2/SIXCDX por isso que voltei, pois a reclamação dos usuários que usam o sistema foi muita.

Alguns podem me dizer para usar SET SCOPE, mas este comando pelo que sei abrange somente uma condição do filtro.

A impressão que tenho é que o Harbour fica procurando outros registros fora do filtro, por isso a lentidão quando tenta movimentar com setas ou teclas de paginação.

Gostaria de saber se existe a possibilidade de aumentar esta velocidade, e deixar equivalente ao programa compilado em CLIPPER 5.3b / CDX.

Estou usando harbour 2.0 com CDX compilando via linha de comando.

Abaixo está um exemplo do código com o dbedit lento nas extremidades:

Código: Selecionar todos

FUNCTION FISCALC4()
 // 04/12/2003

 if PARAMETRO->numercli!=8 // DIFRENTE DE rodofly
    mCAMPO1='Outr/MObra'
    mCAMPO2='Tarifa '
 else
    mCAMPO1='Tx.Entrega'
    mCAMPO2='Descarg'
 endif

 mECODIGO=SPACE(18)
 mDATINI:=mDATFIM:=CTOD(SPACE(8))
 mECODIGO=SPACE(18)


 DO WHILE .T.
    SELE NOTA
    SET ORDER TO 2
    GO TOP

    t='Consulta de Nota Fiscal Especial'
    r=''
    a='Consulta'
    CLEARTELA2(t,r,a)


    private v1[05]
    v1[1]:= "NOTA->CONHEC"
    v1[2]:= "NOTA->CDATA"
    v1[3]:= "NOTA->CNF1"
    v1[4]:= "NOTA->CNF2"
    v1[5]:= "NOTA->CNF3"

    private v2[05]
    v2[1]:= "9999999"
    v2[2]:= "99/99/99"
    v2[3]:= "@!"
    v2[4]:= "@!"
    v2[5]:= "@!"

    private v3[05]
    v3[1]:= "Conhec"
    v3[2]:= "Data"
    v3[3]:= "Nota Fiscal 1"
    v3[4]:= "Nota Fiscal 2"
    v3[5]:= "Nota Fiscal 3"

    M1:='[F2] Consulta   [F5] Filtra p/ remetente  [F6] Filra p/ Veiculo  '
    M2:='[F7] Procura P/ NF  '
    mOLDCOLOR:=SETCOLOR()
    SET COLOR TO
    @ 23,0 SAY SPACE(80)
    @ 24,0 SAY SPACE(80)
    @ 23,40-int(len(trim(m1))/2) say m1
    @ 24,40-int(len(trim(m2))/2) say m2
    SETCOLOR(mCORSEGUNDA)
    @ 03,0 CLEAR TO 18,79
    @ 03,0 TO 18,79 DOUB
    dbedit(04,01,17,78,V1,'DBFISC3',v2,v3)
    EXIT
 ENDDO
 SELE NOTA2
 set relation to
 SET FILTER TO
 SET ORDER TO 1
 GO TOP
 RETURN



 * ===================================================================== = *
 FUNCTION DBFISC4
 PARAmETERS mODO, pVETOR
 mTELAMOV1 = SAVESCREEN(04,01,22,79)
 // Mostra registro na tela -----------------------------------------------
 SETCOLOR(mCORSEGUNDA)
 @ 19,0 CLEAR TO 22,79
 mCONHEC:=NOTA->CONHEC
 mCCLIENTE1:=NOTA->CCLIENTE1
 mCCLIENTE2:=NOTA->CCLIENTE2

 SELE EMPRESA
 SET ORDER TO 1
 SEEK mCCLIENTE1
 IF EOF()
    mREMETENTE:='   '
 ELSE
    mREMETENTE:=EMPRESA->ENOME
 ENDIF

 SEEK mCCLIENTE2
 IF EOF()
    mDESTINATARIO:='   '
 ELSE
    mDESTINATARIO:=EMPRESA->ENOME
 ENDIF

 @ 19,12 SAY 'Conhecimento -> '+NOTA->CONHEC
 @ 20,12 SAY 'Remetente    -> '+mREMETENTE
 @ 21,12 SAY 'Destinatario -> '+mDESTINATARIO
 SETCOLOR(mCORPRIMEIRA)
 // ---------------------------------------------------------

     IF LASTKEY ()  = -1                  //  Consulta
         SAVE SCREEN TO mTELA11
         CLEARTELA2(t,R,A)
         sele nota2
         mFILTRO=DBFILTER()

         SELE NOTA
         NOTVARIA()
         NOTGETA()

         SELE EMPRESA
         SEEK mCCLIENTE1
         IF !EOF()
            @ 4,2 SAY LEFT(EMPRESA->ENOME,30)
         ENDIF
         SELE EMPRESA
         SEEK mCCLIENTE2
         IF !EOF()
            @ 4,44 SAY LEFT(EMPRESA->ENOME,30)
         ENDIF
         SELE EMPRESA
         SEEK mCCLIENTE3
         IF !EOF()
            @ 7,2 SAY LEFT(EMPRESA->ENOME,30)
         ENDIF
         SELE EMPRESA
         SEEK mCCLIENTE4
         IF !EOF()
            @ 7,44 SAY LEFT(EMPRESA->ENOME,30)
         ENDIF
         @ 23,0 SAY 'Baixado dia '+dtoc(nota->canhoto)
         SELE NOTA
         if nota->cancelado='S'
            @ 23,25 SAY 'CANCELADO'
            PARA()
         ENDIF
         if !empty(fatura)
            @ 23,30 say 'Fatura : ' +nota->fatura
         endif
         @ 23,60 say 'Hora.. '+nota->hora
         PARA()
         Mconhec=nota->conhec
         sele nota2
         SET FILTER TO CONHEC=mCONHEC
         GO TOP
         set ORDER to 2

         declare v1[5]
         v1[1] = "NOTA2"
         v1[2] = "DATA2"
         V1[3] = "VALOR2"
         V1[4] = "QTD2"
         v1[5] = "PESO2"

         declare v2[5]
         v2[1] = "@!"
         v2[2] = "99/99/99"
         V2[3] = "99,999,999.99"
         V2[4] = "99999"
         V2[5] = "99999.999"

         declare v3[5]
         v3[1] = "Nota"
         v3[2] = "Data"
         V3[3] = "Valor"
         V3[4] = "Qtd"
         V3[5] = "Peso"

         show('1 Inc  2 Alt  3 Exc     [ESC] Finaliza')
         SAVE SCREEN TO mTELANOTA
         SETCOLOR(mCORSEGUNDA)
         @ 11,0 CLEAR TO 22,79
         @ 11,0 TO 22,79 DOUB
         @ 21,05 GET mCNF1
         @ 21,30 GET mCNF2
         @ 21,55 GET mCNF3
         CLEAR GETS
         dbedit(12,02,20,78,V1,.T.,v2,v3)
         SAVE SCREEN TO mTELA10
         SETCOLOR(mCORSEGUNDA)
         if parametro->recibocon='S' // se imprimir contrato de terceiro no conhecimento
             Mirfonte=0
             GETFRTA()
             SELE CONTRAT
             SEEK mCCODIGO
             IF !EOF()
                @ 10,23 SAY LEFT(CONTRAT->NOME,30)
             ENDIF
             SELE NOTA
             SETCOLOR(mCORPRIMEIRA)
             PARA()
             RESTORE SCREEN FROM MTELA10
         ENDIF
         IF PARAMETRO->NUMERCLI=11 // Rodoback
             mTELARODO:=SAVESCREEN(10,20,16,60)
             SETCOLOR(mCORSEGUNDA)
             @ 10,20 clear to 16,60
             @ 10,20 to 17,60 doub
             @ 11,22 SAY 'Expedido..... ' GET mEXPEDIDO PICT '@!'
             @ 12,22 SAY 'Destino...... ' get mXDESTINO PICT '@S20'
             @ 13,22 SAY 'Comprovante.. ' get mCOMPROVANT PICT '@S20'
             @ 14,22 SAY 'Nota Fiscal.. ' get mNFISCAL PICT '@S20'
             @ 15,22 SAY 'N§ de cheques ' get mCHEQUES
             CLEAR GETS
             SETCOLOR(mCORPRIMEIRA)
         ENDIF
         IF PARAMETRO->NUMERCLI=10 // RNF
             mTELARODO:=SAVESCREEN(10,20,14,60)
             SETCOLOR(mCORSEGUNDA)
             @ 10,20 clear to 14,60
             @ 10,20 to 14,60 doub
             @ 11,22 SAY 'Cia Seguradora' GET mCIASEG  PICT '@S20'
             @ 12,22 SAY 'Ap¢lice numero' get mAPOLICE PICT '@!'
             @ 13,22 SAY 'Vr. p/ seguro ' get mVRSEGURO PICT '9,999,999.99'
             CLEAR GETS
             SETCOLOR(mCORPRIMEIRA)
         ENDIF

         sele nota2
         SET FILTER TO &mFILTRO
         para()
         RESTORE SCREEN FROM mTELA11
         RETURN (1)
     ENDIF

     if lastkey() = - 4                   //  Filtra
        mCOLOROLD := setcolor()
        setcolor('W/N')
        @ 23,0  say space(80)
        mDATINI:=mDATFIM:=DATE()
        mECODIGO:=SPACE(18)

        @ 23,0  say 'Inicial' get mDATINI valid mDATINI != ctod(space(08))
        @ 23,20 say 'Final'   get mDATFIM valid mDATFIM != ctod(space(08))
        @ 23,50 SAY 'Remetente ' get mECODIGO PICT '99.999.999/9999-99' VALID VERECODIGO(@mECODIGO,3,35)
        read
        setcolor(mCOLOROLD)
        if lastkey() = 27
           if confirma('Desfiltra os lan‡amentos ? ')
              SETCOLOR(mCORSEGUNDA)
              @ 03,0 CLEAR TO 18,79
              @ 03,0 TO 18,79 DOUB
              mCLIFILTRO=SPACE(18)

              SELE NOTA2
              SET FILTER TO
           endif
           return (2)
        endif
        show('Aguarde, filtrando registros . . . ')

        SELE EMPRESA
        SEEK mECODIGO

        SELE NOTA2
        SETCOLOR('WB/G+')
        @ 03,0  SAY 'Aguarde, filtrando registros . . .'
        mCLIFILTRO=mECODIGO
        set filter  to DATA2 >= mDATINI .and. DATA2 <= mDATFIM .AND. NOTA->CCLIENTE1=MECODIGO
        GO TOP
        @ 03,0  say 'Cliente    '+LEFT(empresa->enome,39)+'  De '+dtoc(Mdatini)+' ate '+dtoc(Mdatfim)
        setcolor(Mcorsegunda)
        return (2)
     endif

     if lastkey() = -5                   //  Filtra 2
        mCOLOROLD := setcolor()
        setcolor('W/N')
        @ 23,0  say space(80)
        mDATINI:=mDATFIM:=DATE()
        mVCODIGO=SPACE(8)

        @ 23,0  say 'Inicial' get mDATINI valid mDATINI != ctod(space(08))
        @ 23,20 say 'Final'   get mDATFIM valid mDATFIM != ctod(space(08))
        @ 23,50 SAY 'Placa ' get mVCODIGO PICT 'AAA-9999'
        read
        setcolor(mCOLOROLD)
        if lastkey() = 27
           if confirma('Desfiltra os lan‡amentos ? ')
              SETCOLOR(mCORSEGUNDA)
              @ 03,0 CLEAR TO 18,79
              @ 03,0 TO 18,79 DOUB
              mCLIFILTRO=SPACE(18)
              SELE NOTA2
              SET FILTER TO
           endif
           return (2)
        endif

        SELE NOTA2
        @ 03,0  say 'Placa      '+LEFT(VEICULO->MOTORISTA,40)+'  Inicio '+dtoc(Mdatini)+'   Final '+dtoc(Mdatfim) COLOR ('WB/G+')
        setcolor(Mcorsegunda)

        SHOW('Aguarde, filtrando registros . . .')
        set filter  to DATA2 >= mDATINI .and. DATA2 <= mDATFIM .AND. NOTA->VCODIGO=mVCODIGO
        GO TOP
        show('                                                    ')
        return (2)
     endif

     if lastkey() = - 6 // F7 PROCURA
        DO WHILE .T.
            mNOTA2=SPACE(10)
            @ 23,0  say space(80)
            @ 23,0  say 'Consultar nota fiscal n£mero [Enter para voltar]' get mNOTA2 PICT '9999999999'  VALID MOSTRAZERO(@mNOTA2,0)
            read
            if val(mnota2)=0
                exit
            ENDIF

            SELE NOTA2
            SET ORDER TO 2
            SEEK mNOTA2
            IF EOF()
                SET FILTER TO
                ALERT('Nota fiscal nÆo foi encontrada !!!')
                SELE NOTA2
                LOOP
            ENDIF
            EXIT
        ENDDO
        return (2)
     endif

 // monta tela de informacoes
 M1:='[F2] Consulta   [F5] Filtra p/ remetente  [F6] Filra p/ Veiculo  '
 M2:='[F7] Procura P/ NF  '
 mOLDCOLOR:=SETCOLOR()
 SET COLOR TO
 @ 23,0 SAY SPACE(80)
 @ 24,0 SAY SPACE(80)
 @ 23,40-int(len(trim(m1))/2) say m1
 @ 24,40-int(len(trim(m2))/2) say m2
 SETCOLOR(mCORSEGUNDA)


  IF LASTKEY()=27
      RETURN (0)
  ENDIF

 RETURN (1)




RETURN .T.


Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Itamar M. Lins Jr. »

Ola!
Não é boa pratica o uso do set filter em grandes arquivos.
A solução é usar a nova IOMEM, cria indices em memória ram, ou arquivos temporários.
Outra é usar set scope.
Alguns podem me dizer para usar SET SCOPE, mas este comando pelo que sei abrange somente uma condição do filtro.
Não entedi direito mais para usar o set scope é preciso o dbf está indexado, e na sentença do scope a mesma coisa, por exemplo:

Código: Selecionar todos

index on dtos(data) + filial + cancelado
OrdScope(0,dtos(data) + filial + 'S') //se filial for caractere
OrdScope(1,dtos(data) + filial + 'S')
Fica rápido.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Maligno »

O uso de browser para navageção de dados é coisa que não se deve ter disponível em qualquer situação. Há bancos de dados mais volumosos que inviabilizam esse tipo de recurso. Imagine se, na situação de lentidão em que está, você puser isso numa rede com 50 usuários? Aliás, em muitos programas Windows/GUI é difícil encontrar browsers do tipo (aí chama-se Grid). A não ser em volumes de dados realmente pequenos e com um SGBD client/server.

Portanto, tenho três sugestões: limite o volume de dados com SET SCOPE (em muitos casos o escopo "mata" o problema de vez) OU reestruture seu banco de dados, segmentando-o em partes mais facilmente manipuláveis (também limitando o volume) OU simplesmente não use browser nesse banco de dados.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Maligno »

A impressão que tenho é que o Harbour fica procurando outros registros fora do filtro, por isso a lentidão quando tenta movimentar com setas ou teclas de paginação.
Em tempo:
Quando há um filtro ativo, ao pressionar um PageDown, por exemplo, o sistema vai procurar registro a registro, até completar uma "página" do browser. Se a quantidade de registros compatíveis com o filtro for muito menor que a quantidade total de registros do banco de dados, é de se esperar uma lentidão apreciável.

Um exemplo simples: o banco contém 100.000 registros. Pelo filtro, o último registro válido é o de número 50.000. Logicamente o sistema não sabe disso. Se o ponteiro já está posicionado nesse último registro, pressionar a seta pra baixo equivale a forçar o sistema a ler todos os registros de 50.001 até 100.000. Logo, é fácil perceber o por quê da demora.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por leandromiler »

Eu entendo e concordo com o que o Maligno disse, só que compilando o mesmo sistema com clipper 5.3b / CDX Nativo / blinker 7, a lentidão é imperceptível. Fica muito rapido. O problema da lentidão nestas telas, só ocorre quando compilo com harbour.

Vou tentar agora com Set Scope , como devo usar o comando setscope neste caso, poderiam me mostrar ?

set filter to DATA2 >= mDATINI .and. DATA2 <= mDATFIM .AND. NOTA->CCLIENTE1=MECODIGO

Abraços.
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Maligno »

O que passei foi o padrão de comportamento que pode acontecer com browsers de dados. Se a velocidade de navegação era boa no Clipper, seria de se esperar uma velocidade igual ou até maior em [x]Harbour. Se não é isso o que ocorre, algo está errado, e não parece ser no seu fonte. Bug no compilador? Pode até ser.

Agora veja bem: acho que você alterar seu fonte para ficar bom no [x]Harbour como era no Clipper não é o melhor caminho. Discuta com os colegas sobre a possibilidade de alterar algo na compilação (talvez trocar de compilador) para que fique do jeito que era. Deve haver compatibilidade. Até porque, repare: se você conseguir o que tinha antes no Clipper alterando seu fonte, quem garante que em seu programa não existem diversos outros pontos com esses mesmos problemas, mas que você ainda não percebeu? Se há algo errado no compilador, é ele que deve ser corrigido, não o seu fonte.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por leandromiler »

O mais estranho é que eu compilei o mesmo sistema usando CLIPER 5.2e / SIXCDX / blinker 7, e fica lento como no harbour. Somente no clipper 5.3b que fica rapido.

E se eu usar escopo, será que melhora ? Como eu poderia usar escopo tendo uma condição de varios parametros, tipo a mostrada na minha mensagem anterior ?
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Maligno »

Usar SET SCOPE serve apenas para "diminuir" o volume de dados visíveis ao sistema, o que faz a lentidão diminuir, você deve usará em conjunto com o SET FILTER.

Exemplo de uso: imagine que você quer todas as duplicatas de certo cliente, dentro de certo período de tempo. Configure o escopo para mostrar apenas os dados daquele cliente. Já deve "diminuir" sensivelmente a base de dados. Com o SET FILTER você só precisa configurar o período da pesquisa. Mesmo em volumes grandes de dados, com o SET SCOPE fica limitado apenas àquele cliente. Daí é rápido.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Maligno »

Aliás, se com Clipper v5.2 também ficava lento, pergunto: era usando a biblioteca SIX?
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Itamar M. Lins Jr. »

Vou tentar agora com Set Scope , como devo usar o comando setscope neste caso, poderiam me mostrar ?

set filter to DATA2 >= mDATINI .and. DATA2 <= mDATFIM .AND. NOTA->CCLIENTE1=MECODIGO
Fica assim:

Código: Selecionar todos

index on dtos(data2)+ccliente1
OrdScope(0,dtos(mDatIni)+mecodigo)
OrdScope(1,dtos(mDatFim)+mecodigo)
Pode fazer ai que vai ficar um foguete!

E para desligar o scope
set scope to
ou
OrdScope(0,)
OrdScope(1,)


Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Maligno »

Ah, sim. Claro. Dei uma solução combinada. Mas se for criada uma chave de índice só para obter o filtro desejado, não será necessário usar SET FILTER, o que vai acelerar a pesquisa ao máximo possível.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por leandromiler »

Vou tentar usar o SCOPE como me disseram e postarei aqui os resultados.

em resposta a perguntado Maligno, SIM, eu usei Clipper 5.2e / SIXCDX / Blinker 7, e ficou lento igual no Harbour.
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
leandromiler
Usuário Nível 2
Usuário Nível 2
Mensagens: 55
Registrado em: 26 Nov 2009 08:38
Localização: Ribeirão Preto - SP
Contato:

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por leandromiler »

Usei o ordscope() ficou muito rapido - espantoso !!!! ficou extremamente rapido mesmo. Fiz o mesmo teste compilando em clipper 5.3b também funcionou rapido igual ao harbour. :))

Agradeço muito a todos vocês !!! No que eu puder estarei sempre disposto a ajuda-los.

Será que vale a pena eu colocar o este sistema compilado com harbour em produção ??

Abraços.
Clipper 5.3b / CDX Nativo / Blinker 7

Ninguem sabe tanto que não possa aprender, e nem sabe tão pouco que não possa ensinar !!!
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Maligno »

Sim, com uma chave de índice fazendo o filtro, você alcança o máximo de velocidade possível num banco de dados de acesso local. Mas quando puder, migre para client/server. Ficará muito mais rápido ainda. Sem falar que o leque de recursos aumenta consideravelmente.

Se o compilador estiver numa versão considerada estável, não há motivo para não utilizá-lo em produção.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Re: Velocidade com dbedit filtrado no Harbour

Mensagem por Itamar M. Lins Jr. »

Ola!
Será que vale a pena eu colocar o este sistema compilado com harbour em produção ??
Olha eu uso o harbour em produção, inclusive do SVN. Faça os testes mais importantes se tudo ok, libera.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder