So I have a few questions:
1) What process do I attach a debugger to in order to debug DLLs and figure out what is causing them to run so slowly?
2) How do I figure out where the program is spending its time to fix the speed issue?
Also, a few things I have noticed:
When the portfolio optimizer runs, I can see that the DLL is loaded multiple times. Not just once. I want to know which process these DLLs are being loaded into, because I see multiple DLL_PROCESS_ATTACH reasons in DllMain for the DLL execution.
So if my DLL accesses a database to load tables of data, this part is slow. So I changed my code to cache as much data as possible and to avoid load costs; however, the optimizer is still running very slowly.
I need some tips/tricks to speed up this process and make my strategies run faster, so it doesn't take up my entire license period just to run one optimization.
A sample of a function that my DLL calls would be something like this:
Code: Select all
external: "D:\code\TSDataBridge\Debug\DataBridge.dll", double, "GetOmega", IEasyLanguageObject,
int {year}, int {month}, int {day}, string {sym}, string {invsym};
inputs:
_year( numericsimple ),
_month( numericsimple ),
_day( Numericsimple ),
_sym( string ),
_invsym( string );
ELGetOmega = GetOmega( self, _year, _month, _day, _sym, _invsym );
Any assistance at all would be very helpful.