What We’re Looking For:
3+ years of experience with InterSystems IRIS, Caché, or Ensemble
Strong skills in ObjectScript, SQL, and scripting languages (Python/Java a plus)
Experience with healthcare interoperability (HL7, FHIR, X12)
Cloud knowledge is a bonus (Azure, AWS, or GCP)
Curious mind + collaborative spirit + bias for action
Yet Another Performance Puzzle
Having been inspired with Shared code execution speed question/discussion, I dare to ask another one which is annoying me and my colleagues for several weeks.
We have a routine called Lib that comprises 200 $$-functions of 1500 code lines total. It was noticed that after calling _any_ function of another rather big routine (1900 functions, 32000 lines) the next call of $$someFunction^Lib(x) is getting 10-20% slower than previous call of the same function. This effect doesn't depend on:
- which one specific function is being called between two calls of $$someFunction^Lib(x),
- which one specific big routine has been chosen as a Big One for this test,
- whether an "intermediate" function leaves local variables after call,
while it depends on:
- the number of labels in a big routine: the more, the slower the next call of $$someFunction^Lib(x) is;
whether Lib has been written as ObjectScript procedures: in this case the speed difference between the 1st and the 2nd call is smaller.
Have anybody noticed something similar? What is the possible reason of this and how to avoid it? I would be thankful for any thoughts...