-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Performance Issues with executor #297
Comments
If you're going to write a dsl execution engine, you need to provide mechanisms for users to tune their code in your engine. |
Hi @benMain - I've been looking at performance in the engine, and I currently have a pull request under review that has some performance improvements. The pull request is at #278. I would be interested in feedback on whether that pull request provides an improvement in your scenario. If you'd like to try it, it is a drop-in update for the current engine. The source code is public at https://github.com/projecttacoma/cql-execution/tree/perf-optimizations. |
Thanks @birick1 I see your pr. Let me give that a shot :) |
@birick1. Just came back to this after a couple of months working other projects. Anecdotally, I'm seeing a significant performance improvement executing locally and in aws lambda utilizing your ===============================
|
@benMain - Coincidentally, I reached out to Brian and other team members this morning to try to push Brian's PR forward. There are a couple of things we need to agree upon first, but I think we're likely close to merging. Stay tuned to #278. On a side note, if you see specific opportunities for further performance improvements, please feel free to propose some specific changes. I can't promise that we will have capacity to implement them, but if not, maybe you do? |
We are in the process of implementing NCQA HEDIS dQMs behind a web service. NCQA references this project as the cql + elm execution engine they had used. They directly release the cql and elm to for us to run against our patients' FHIR r4 resource bundles. Our goal is to be able to synchronously process measures in a request/response lifecycle. What we're seeing in AWS Lambda runtime is that
executor.exec(patientSource)
is taking approximately 15 seconds per patient measure. To our organization that seems unacceptably slow regardless of any overhead involved in interpreting the ELM, especially considering that we're feeding the executor all the resources it needs in RAM and the Patient source represents one patient with approximately 1MB in resource data.I recognize that you are not responsible for the code that get fed into your engine, but in this instance, to ensure compliance with NCQA, neither are we. What I'm seeking are diagnostic tools, ie. a stopwatch at the expression level that might emit traces to help us pinpoint what exactly is causing performance issues and take those issues back to NCQA.
The text was updated successfully, but these errors were encountered: