Pular para o conteúdo principal

Postagem em destaque

BlackTDN :: LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring

_Créditos das imagens: ChatGPT_ ### LeetCode :: Comparando Implementações Harbour e TLPP para o Desafio Longest Palindromic Substring Resolver o problema do [Longest Palindromic Substring](https://leetcode.com/problems/longest-palindromic-substring/description/) é um exercício clássico de programação, que desafia desenvolvedores a encontrar a maior substring palindrômica dentro de uma string. Recentemente, exploramos soluções tanto em Harbour quanto em TLPP (Total Language Protheus Programming). Neste artigo, comparamos as implementações nessas duas linguagens, destacando suas semelhanças, diferenças e funcionalidades específicas. #### Implementações em Harbour ##### Versão 5.1 Essa solução utiliza a técnica de expansão a partir do centro do palíndromo. Cada caractere ou par de caracteres consecutivos é considerado um possível "centro". O algoritmo expande em ambas as direções enquanto os caracteres forem iguais, retornando o maior palíndromo encontrado. ##### Versão 5....

BlackTDN :: WGetTickCount para Medição de Tempo

cpu_speed Verifiquei que a partir da Build 7.00.111010P o pessoal de tecnologia da TOTVS implementou a função WGetTickCount.

Uma boa explicação para o que ela faz poderá ser obtida em: Lendo e medindo o tempo em C e C++: GetTickCount.

Para saber se a função WGetTickCount está disponível na sua Build execute:

__lWGTickCount := ( aSCan( __FunArr() , { |e| ( e[1] == "WGetTickCount" ) } ) > 0 )

verificamos se a função está listada em __FunArr() armazenando o retorno em __lWGTickCount.

Considerando que, segundo Rodrigo Strauss: “GetTickCount é uma função da api Win32, portanto disponível somente no Windows.” acredito que o prefixo W em WGetTickCount define que WGetTickCount só funcione no SO da Microsoft. Acredito que prefixo “W” queira dizer “Windows”GetTickCount. Sendo assim, para saber se poderá utilizar WGetTickCount no seu SO teste com:

__lWGTickCount    := ( !IsSrvUnix() .and. ( aSCan( __FunArr() , { |e| ( e[1] == "WGetTickCount" ) } ) > 0 ) )

Em função da implementação dessa nova função os exemplos, para teste de performance/memória:

foram reescritos para considerar a nova função para a medição no tempo.

Como os exemplos foram “herdados” do Harbour Project e lá tempos a função hb_secondsCPU() tivemos que implementar, no exemplo, para a plataforma TOTVS a nossa hb_secondsCPU() conforme abaixo:

static Function hb_secondsCPU()
IF ( __lWGTickCount )
    Return(WGetTickCount())
Else
    Return(Seconds())
EndIF   

Agora os testes serão equivalentes no Harbour e no Totvs appServer.

Quer testar a performance do seu servidor Totvs appServer? Obtenha os códigos memtst.prg e stringtst.prg clicando aqui.

Compile o Projeto e execute:

  • u_memtst : Para testar o gerenciamento de memória pelo Totvs appServer e;
  • u_stringtst: Idem + testar o seu comportamento em relação ao tamanho de uma String.
[]s
иαldσ dj

Comentários

Postagens mais visitadas