Performance untyped calling
Posted: Thu Feb 21, 2019 10:34 am
In the last months I have used the testing time also for running performance analisis using the nice program "Telerik Just Trace" that isn't sold anymore.
I have strong typed many functions and methods and I could improve the performance much although I cannot give any absolute values.
I have got the following impression regarding efficiency:
Using Usuals, symbols, arrays is not a really visible performance criterion. Often strings (the dotnet strings!) with more than a few hundred characters are worse.
Late bound calling should be avoided where possible and called often, but is not always visible.
Most performance results can be achieved not having any clipper calling conventions (variable number of arguments). In this case both, early bound calls and late bound calls using reflection seem to suffer under having to store all arguments into a temporary array, then calling the method and the method has to extract every parameter from the temporary array.
So the compiler switch "Implicit clipper calling convention" which is currently set in our projects seems to play an important role.
Is it right that switching off this parameter needs declaring all functions/methods like "Nomethod" with variable list of arguments as clipper? But doing this could give a good kick of performance?
Arne
I have strong typed many functions and methods and I could improve the performance much although I cannot give any absolute values.
I have got the following impression regarding efficiency:
Using Usuals, symbols, arrays is not a really visible performance criterion. Often strings (the dotnet strings!) with more than a few hundred characters are worse.
Late bound calling should be avoided where possible and called often, but is not always visible.
Most performance results can be achieved not having any clipper calling conventions (variable number of arguments). In this case both, early bound calls and late bound calls using reflection seem to suffer under having to store all arguments into a temporary array, then calling the method and the method has to extract every parameter from the temporary array.
So the compiler switch "Implicit clipper calling convention" which is currently set in our projects seems to play an important role.
Is it right that switching off this parameter needs declaring all functions/methods like "Nomethod" with variable list of arguments as clipper? But doing this could give a good kick of performance?
Arne