Cuando hablamos de llamada de clase, lógicamente tomamos en cuenta la llamada del método, entonces, el desempeño de llamada de una clase siempre se realiza por medio de un método para conseguir establecer una comparación equivalente con una función.

 


Ejemplo:
oObj:Saldo() y Saldo()
Sin embargo, no llamar los métodos de una clase, sin instanciar. Entonces, realizamos tres ejemplos de desempeño y tuvimos los siguientes resultados en una repetición de 100.000 veces: Tiempo de ejecución de función: 0.078 Tiempo de ejecución de método: 0.078 Tiempo de ejecución con instancia de clase y llamada de método: 0.312
Ejemplo de prueba: Fuente TesteChamada.prw
// MethodVsFunctionCallTest.prw
#INCLUDE "TOTVS.CH"
Function MethodVsFunctionCallTest()
Local nCount := 1 // Contador de pruebas
Local nSeconds:= 0 // Segundos antes de entrar en la Rutina
Local oTest := Nil // Llama clase para probar llamada
Local nTests := 100000 // Cantidad de pruebas
// Espera estabilización del servidor
Sleep(3000)
nSeconds := Seconds()
For nCount := 1 To nTests
Test()
Next
ConOut("Tiempo de ejecución de función: " + AllTrim(Str(Seconds() - nSeconds)) )
nSeconds := Seconds()
oTest := Dummy():Dummy()
For nCount := 1 To nTests
oTest:Test()
Next
ConOut("Tiempo de ejecución de método: " + AllTrim(Str(Seconds() - nSeconds)) )
nSeconds := Seconds()
For nCount := 1 To nTests
oTest := Dummy():Dummy()
oTest:Test()
Next
ConOut("Tiempo de ejecución con instancia de clase y llamada de método: " + AllTrim(Str(Seconds() - nSeconds)) )
Return
Function Test()
Return
Class Dummy
Method Dummy()
Method Test()
ENDCLASS
Method Dummy() Class Dummy
Return
Method Test() Class Dummy
Return