Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: cArqTab :: Otimizando a Abertura do Sistema: Como a Escolha do Método de Carregamento Afeta o Desempenho

_Créditos da imagem: Gerada com auxílio do ChatGPT_ # cArqTab :: Como o carregamento de informações em uma variável pode tornar lenta a abertura do sistema TOTVS Microsiga Protheus --- # Comparando LoadFromDBQuery e LoadFromDBWhile: Vantagens e Desempenho No desenvolvimento de soluções para o TOTVS Microsiga Protheus, otimizar o tempo de execução das funções é essencial, especialmente quando lidamos com grandes volumes de dados. Neste artigo, vamos analisar a diferença de desempenho entre os métodos `LoadFromDBQuery` e `LoadFromDBWhile`, utilizando os tempos de execução para demonstrar a vantagem de cada abordagem. ## Contexto do Teste Para avaliar o desempenho, executamos dois procedimentos distintos: - **U_TSTArqTabLoadDBQuery**: utiliza a função `LoadFromDBQuery`. - **U_TSTArqTabLoadDBWhile**: utiliza a função `LoadFromDBWhile`. Os comandos foram executados no ambiente Cygwin, e PowerShell e os tempos foram medidos da seguinte forma: *Cygwin ```bash $ time C:/totvs/tst/sma

Protheus :: Programação Básica em Advpl “Combo XII”

Operadores Unários:

O Advpl suporta um sinal negativo ( o chamado operador unário). Ele tem a maior prioridade entre os operadores aritméticos. Por Exemplo:

  • - 1 + 2
  • resulta 1 e não -3.
O Advpl suporta os operadores de incrementos e decrementos unários ++ e --. O Operador ++ acrescenta 1 a seu operando, -- subtrai 1. Ambos têm parceiros nas instruções regulares de atribuições. Exemplo:

nContador++ é idêntico a nContador := nContador + 1

Entretanto, a vantagem desses operadores unários é o fato de serem concisos e de poderem ser utilizados para deferir a operação até depois de processado o valor. Por Exemplo, para carregar um array de campo CPnome de cada registro de um banco de dados chamado Alunos, poderíamos escrever:

Local acPNomes
Local nContador := 1

Use Alunos

acPNomes := Array( RecCount() )
While ( Alunos )->( !Eof() )
acPNomes[ nContador++ ] := ( Alunos )->CPNOME
( Alunos )->( dbSkip() )
End While

O Subscrito do array usa o valor de nContador, depois acrescenta 1. Dizemos que o ++, neste caso, é um operador pós-determinado. Você pode usá-lo como um operador de prefixos, em cujo caso o valor será incrementado ANTES de ser usado. Por exemplo, a codificação anterior deixa o nContador com um valor superior em 1 unidade ao número de registros processados. Para deixá-lo com o valor real, poderíamos escrever:

Local acPNomes
Local nContador := 0

Use Alunos

acPNomes := Array( RecCount() )
While ( Alunos )->( !Eof() )
acPNomes[ ++nContador] := ( Alunos )->CPNOME
( Alunos )->( dbSkip() )
End While

No modo de prefixo, o computador aplica o incremento antes de usar o valor.

Comentários

Postagens mais visitadas