Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...


La diferencia entre el DbSeek() y el MsSeek() se nota en aplicaciones con gran volumen de marcaciones, como informes, que necesitan referenciar diversas veces el mismo registro, durante una ejecución.

 

Realizamos una prueba comparando los dos desempeños en una repetición de 100.000 veces.

 

Tiempo utilizado con la función DbSeek: 45.17

 

Tiempo utilizado con la función MsSeek: 21.93

 

 
Prueba:
// DbSeekVsMsSeekTest.prw
#INCLUDE "TOTVS.CH"
Static nVezes := 100000
// Llama la función por separado probando cada escenario
Function TestSeek()
// Realiza la preparación de entornos
RpcSetEnv("T1","D MG 01") // Empresa y Sucursal
Sleep(5000)
// Prueba con DbSeek
TestDbSeek()
// Prueba con MsSeek
TestMsSeek()
// Fecha entorno
RPCClearEnv()
Return
Static Function TestDbSeek()
Local nSeconds:= 0 // Segundos en que se inició la
Local nX := 0 // Contador de repeticiones
nSeconds := Seconds()
For nX := 1 To nVezes
DbSelectArea("SA1")
DbSetOrder(1) // SIX -> A1_FILIAL+A1_COD+A1_LOJA
DbSeek(XFilial("SA1") + "000001" + "01" )
Next
ConOut("Tiempo: " + AllTrim(Str(Seconds() - nSeconds)) )
Return
Static Function TestMsSeek()
Local nSeconds:= 0 // Segundos en que se inició la
Local nX := 0 // Contador de repeticiones
nSeconds := Seconds()
For nX := 1 To nVezes
DbSelectArea("SA1")
DbSetOrder(1) // SIX -> A1_FILIAL+A1_COD+A1_LOJA
MsSeek(XFilial("SA1") + "000001" + "01" )
Next
ConOut("Tiempo: " + AllTrim(Str(Seconds() - nSeconds)) )
Return