1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Dica Progress - Melhor Performance

Discussão em 'Progress 4GL' iniciado por franklin.godinho, Fevereiro 19, 2018.

  1. franklin.godinho

    franklin.godinho Sem Pontuação

    Última edição: Fevereiro 19, 2018
  2. rafael.andrade

    rafael.andrade Membro Master Moderador Equipe de Suporte

  3. franklin.godinho

    franklin.godinho Sem Pontuação

    Ocorre erro ao anexar, deixei um link para download.
  4. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Rapaz, dicas muito boas, eu acrescentaria na parte que se refere a leitura de registros, onde menciona o EQUALITY MATCHES, a seguinte situação:
    Código:
    adequado:
        for each estabelec no-lock
            where estabelec.cod-estabel >= '101'
              and estabelec.cod-estabel <= '140'
            ,
            each nota-fiscal no-lock
            where nota-fiscal.cod-estabel = estabelec.cod-estabel
              and nota-fiscal.serie       = nota-fiscal.serie
              and nota-fiscal.nr-nota-fis = nota-fiscal.nr-nota-fis:
    
        end.
    
    errado:
        for each nota-fiscal no-lock
            where nota-fiscal.cod-estabel >= '101'
              and nota-fiscal.cod-estabel <= '200':
    
        end.
    
    Isso é um exemplo simples, mas que dá uma diferença brutal de performance, então, quantas mais tabelas com os dados de um campo eu tiver, melhor acrecentar a tabela no loop, filtrando o campo individualmente pra depois ir na tabela que realmente queremos ler, usando sempre um = (igual), lembrando que se eu fizer um for each em um campo e o valor desse campo que estou procurando, não existir, o tempo de resposta para o "não tem" é muito grande, supor que o cod-estabel = '130' não existe na tabela nota-fiscal, um for each direto nela demora muito pra dizer que não existe, já se vc for na tabela estabelec, a resposta de que o 130 não existe é instantaneo.

    Tabelas como emitente, nat-operacao, repres, estabelec, os campos chaves dessas tabelas compoe muitos indices em outras tabelas, e conforme a orientação do manual, como eu não tenho filtros para os campos serie e nr-nota-fis, eu declaro igual a ela mesma pra que o progress não tente ir pra fora dos indices.

    Outra coisa interessante que esta sugerindo é o uso de programas persistentes, é excelente, carrega uma só vez e depois só vai usando, e um run tradicional recarrega a rotina varias vezes, pensando em evolução, apartir da versão 10.1A eu acho, não lembro bem, o progress trata nativo ORIENTADO A OBJETOS, ou seja, temos agora os .cls, que segue a mesma logica dos persistentes, mas do meu ponto de vista, tem grandes vantagens.

    Parabéns Franklin por se preocupar em compartilhar esse tipo de informação.
    franklin.godinho e don.junior curtiram isso.
  5. franklin.godinho

    franklin.godinho Sem Pontuação

    Cara, perfeita a sua análise.

    Show de bola, obrigado pelo apoio aeee!!

    Valeu
  6. rborsoi

    rborsoi Sem Pontuação

    Olá.
    Alguém poderia disponibilizar o manual, o link não funciona mais.

Compartilhe esta Página