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 :: Usando Taskkill para forçar o reinicio dos serviços


Às vezes faz-se necessário reiniciar os serviços do protheus mas através do "serviço" do Windows® isso se torna impossível pois podem existir muitos processos pendentes a interrupção dos serviços . Então podemos fazer uso da ferramenta "taskkill" que no exemplo abaixo está em um "script" em Windows® PowerShell®. Nesse exemplo existem quatro serviços do protheus sendo executados com os seguintes nomes: P10Server5110, P10Server5210, P10Server5310 e P10Server5410 onde P10Server corresponde ao Prefixo do serviço e 5110 a 5410 às portas em que eles escutam.

$IniPort = 5110
$EndPort = 5911
$PrefixProcess = "P10Server"
$NameProcess = ""
for ( $Port = $IniPort ; $Port -le $EndPort ; $Port+=100 )
{
$NameProcess = $PrefixProcess+$Port
if ( get-service | where { $_.status -eq "stopped" -and $_.name -eq $NameProcess} )
{
while ( get-service | where { $_.status -eq "stopped" -and $_.name -eq $NameProcess } )
{
start-service $NameProcess
}
}
elseif ( get-service | where { $_.name -eq $NameProcess} )
{
invoke-expression -command 'taskkill -f -fi "SERVICES eq $NameProcess" /t'
start-sleep -seconds 10
while ( get-service | where { $_.status -lt "running" -and $_.name -eq $NameProcess } )
{
start-service $NameProcess
}
}
}

Para que o "script" possa ser executado faz-se necessário autoriza-lo através do Windows® PowerShell®, sendo assim, execute oWindows® PowerShell® e digite o seguinte comando: get-help about_signing. Esse comando irá listar as opções de "Diretivas de Assinatura e de Execução" de "Script", leia-as atentamente. Mas se quiser pular esse passo (eu não recomendo) digite o seguinte comando no Windows® PowerShell®: Set-ExecutionPolicy Unrestricted. Esse comando fará que qualquer "Script" seja executado em sua máquina (mas atente para os ítens de segurança listados à partir do comando get-help about_signing).

Comentários

Postagens mais visitadas