Skip to content
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

Improve Performance Evaluating Measures without Stratifier #962

Merged
merged 1 commit into from
Apr 16, 2023

Conversation

alexanderkiel
Copy link
Member

Evaluating a Measure with reportType of population and no stratifier doesn't need collect the handles. This change determines that situation and just calculates the population count instead of collecting all handles.

This changes enables Blaze to determine the count of large populations were previously lots of memory was used for no reason.

@alexanderkiel alexanderkiel self-assigned this Apr 15, 2023
@alexanderkiel alexanderkiel added enhancement New feature or request module:evaluate-measure performance Performance improvement labels Apr 15, 2023
@alexanderkiel alexanderkiel added this to the v0.20.3 milestone Apr 15, 2023
@codecov
Copy link

codecov bot commented Apr 15, 2023

Codecov Report

Merging #962 (30144ca) into develop (f197663) will decrease coverage by 0.02%.
The diff coverage is 91.25%.

Additional details and impacted files

Impacted file tree graph

@@             Coverage Diff             @@
##           develop     #962      +/-   ##
===========================================
- Coverage    94.06%   94.04%   -0.02%     
===========================================
  Files          240      238       -2     
  Lines        15034    15067      +33     
  Branches       379      381       +2     
===========================================
+ Hits         14141    14170      +29     
- Misses         514      516       +2     
- Partials       379      381       +2     
Impacted Files Coverage Δ
.../blaze/fhir/operation/evaluate_measure/measure.clj 95.58% <75.00%> (+0.06%) ⬆️
...e/fhir/operation/evaluate_measure/measure/util.clj 95.52% <83.33%> (-1.15%) ⬇️
.../src/blaze/fhir/operation/evaluate_measure/cql.clj 98.05% <90.47%> (-1.50%) ⬇️
modules/interaction/src/blaze/interaction/read.clj 100.00% <100.00%> (ø)
.../operation/evaluate_measure/measure/population.clj 100.00% <100.00%> (ø)

... and 2 files with indirect coverage changes

Evaluating a Measure with reportType of population and no stratifier
doesn't need collect the handles. This change determines that situation
and just calculates the population count instead of collecting all
handles.

This changes enables Blaze to determine the count of large populations
were previously lots of memory was used for no reason.

The speedup documented in docs/performance/cql.md is not from this
change. I improved the cache sizes and GC in order to achieve the
performance gains.

I added the observation-category-laboratory query to show that we can
now count 170 M observations without using heap memory.
@alexanderkiel alexanderkiel merged commit f06c59c into develop Apr 16, 2023
90 of 92 checks passed
@alexanderkiel alexanderkiel deleted the cql-population branch April 16, 2023 18:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request module:evaluate-measure performance Performance improvement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant