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

BlackTDN :: Tips & Tricks ~ Driblando a mensagem ‘Improper Function Use’

 

drible_improperQuem nunca topou com a mensagem 'Improper User Function' que atire a primeira tecla.
Eu mesmo, assim como muitos, sentimos a falta daquele recurso malandro de executar funções
diretamente pelo formulas.

Pois bem, ainda é possível..
..desde que algumas variaveis estejam a seu favor, vamos lá!

 

Muitos sabem.. poucos seguem a boa prática de criar funcoes USER, com no minimo 8 caracteres,
sabendo que de acordo com a propria especificação AdvPL, uma USER FUNCTION é identificada por
seus 10 primeiros caracteres, por exemplo:

A <User Function FSTstBTDN> será traduzida pelo precompilador para => <U_FSTstBTD>, onde o 'N' se perde,
por ser o 11º caractere, devido ao limite de tamanho de nome.

U _ F S T S T B T D N

Sabendo deste limite para nomes de funcoes USER, exploraremos um pequeno 'bug', dos vários, na validação utilizada pela Totvs
para identificar/definir se uma função é 'improper function use' ou não.

Utilizando a conhecida AxCadastro('TABELA') pelo campo formulas, a seguinte mensagem será retornada,

IMPROPER

 

Mas se utilizarmos um recurso, onde burlamos a validação será possível a execução.

A condicao será:

Para toda função com tamanho de 10 caracteres ou mais e que for acusada de improper basta adicionar o 11º caractere, por exemplo em uma chamada a AxCadastro('TABELA') seria adicionado o X, ficando a chamada como AxCadastroX('TABELA') burlando assim a validação de ‘improper functions’.

 

 

Obs.:

Isso não será valido para funções USER com nome menor que 10 caracteres, pois a mesma não será encontrada no RPO e será retornada mensagem informando que a função não existe no repositório.

 

 

[]’s,

OBona,

Comentários

Postar um comentário

Postagens mais visitadas