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