EFS2 Custom Data Series - Perfomance Issues
This is a continuation of my previous post, but because I made it work [Thank you Alex and Jason], I reduced the problem to execution performance of the converted script.
I did play around [trying the best solution] and here is what I get:
a/ Builtin EFS2 studies introduce an additional overhead which translate in 12-20% performance degradation. This seems to be known.
b/ Custom data series declared with esfInternal [once loaded] introduce 20-25% performance deterioration [2.1ms vs 1.7, for example].
c/ [And here is the real problem] Custom series declared with efsInternal introduce 200% - 500% performance deterioration during the initial loading [when symbol or base time frame is changed, which I do a lot during the day]. For the example above, the execution time becomes 8.5-9 ms pe bar, during initial loading.
This happens regardless when the first execution of the efsInternal occurs.
Here is a typical example of such custom data series:
studyMAxRSI = efsInternal( "CalcNormalizedRSIFunction", Param1, Param2, rsi(RsiPer, StudyMAx));
where studyMAx = sma(MAPer, SourceMx);
where SourceMx = hlc(inv(Mx));
I also tried to replace the StudyMAx with its instance [studyMAx.getValue()], but same result.
Note: I noticed that there are 6+ calls per bar of each "CalcNormalizedRSIFunction" during initial loading [NoOfefsInternal x NomberOfBars x 6+]. Is this normal?
The total overhead, as reported by Performance Monitor, of those calls amounts to about 40% of the total time [individual time is very low, but there are very many], which tells me that there are other sources of overhead during initial loading.
If anybody can clarify if this is normal, or I am doing something wrong, I would be grateful. I need to make a decision if continue with conversion or get back to EFS1.
Thank you,
Mihai
This is a continuation of my previous post, but because I made it work [Thank you Alex and Jason], I reduced the problem to execution performance of the converted script.
I did play around [trying the best solution] and here is what I get:
a/ Builtin EFS2 studies introduce an additional overhead which translate in 12-20% performance degradation. This seems to be known.
b/ Custom data series declared with esfInternal [once loaded] introduce 20-25% performance deterioration [2.1ms vs 1.7, for example].
c/ [And here is the real problem] Custom series declared with efsInternal introduce 200% - 500% performance deterioration during the initial loading [when symbol or base time frame is changed, which I do a lot during the day]. For the example above, the execution time becomes 8.5-9 ms pe bar, during initial loading.
This happens regardless when the first execution of the efsInternal occurs.
Here is a typical example of such custom data series:
studyMAxRSI = efsInternal( "CalcNormalizedRSIFunction", Param1, Param2, rsi(RsiPer, StudyMAx));
where studyMAx = sma(MAPer, SourceMx);
where SourceMx = hlc(inv(Mx));
I also tried to replace the StudyMAx with its instance [studyMAx.getValue()], but same result.
Note: I noticed that there are 6+ calls per bar of each "CalcNormalizedRSIFunction" during initial loading [NoOfefsInternal x NomberOfBars x 6+]. Is this normal?
The total overhead, as reported by Performance Monitor, of those calls amounts to about 40% of the total time [individual time is very low, but there are very many], which tells me that there are other sources of overhead during initial loading.
If anybody can clarify if this is normal, or I am doing something wrong, I would be grateful. I need to make a decision if continue with conversion or get back to EFS1.
Thank you,
Mihai
Comment