As duas funções, tanto GetMV() e SuperGetMV() retornam o conteúdo de um parâmetro, a diferença que o SuperGetMV, os parâmetros consultados são adicionados em uma área de memória, que permite que em uma nova consulta não seja necessário acessar e pesquisar o parâmetro na base de dados.

 

Realizamos um teste comparando os dois desempenhos numa repetição de 100.000 vezes.

 

Tempo usando a função  SuperGetMV: 5.843

Tempo usando a função  GetMV : 60.122

 

Teste:

// SuperGetMVVsGetMVTest.prw

#INCLUDE "TOTVS.CH"

 

Static nVezes := 100000 // Contador de repeticoes

 

Function SuperGetMVVsGetMVTest()

 

// Faz a preparação de ambientes

RpcSetEnv("T1", "D MG 01") // Empresa e Filial

// Realiza Pausa

Sleep(5000)

TestSupGMV()

TestGetMV()

//Fecha ambiente

RPCClearEnv()

 

Return

 

// Testa SuperGetMV

Static Function TestSupGMV()

 

Local nSeconds    := 0  // Segundos que iniciou a rotina        

Local cRet         := "" // Do teste da funcao 

Local nX           := 0  // Contador de repeticoes

 

nSeconds := Seconds()

For nX := 1 To nVezes

       cRet := SuperGetMV("MV_PAIS"  , .T., "BRA")

       cRet := SuperGetMV("MV_CLIPAD", .T., "000001")

Next

ConOut("Tempo: " + AllTrim(Str(Seconds() - nSeconds)) )

 

Return

 

//Testa GetMV

Static Function TestGetMV()

 

Local nSeconds    := 0  // Segundos que iniciou a rotina        

Local cRet         := "" // Do teste da funcao 

Local nX           := 0  // Contador de repeticoes

 

nSeconds := Seconds()

For nX := 1 To nVezes

       cRet := GetMV("MV_PAIS")

       cRet := GetMV("MV_CLIPAD")

Next

ConOut("Tempo: " + AllTrim(Str(Seconds() - nSeconds)) )

 

Return

 

  • Sem rótulos