Add alternative memory management strategies #395
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Add a
pruning_strategy
argument tomake()
anddrake_config()
so the user can decide howdrake
keeps non-import dependencies in memory when it builds a target.If
pruning_strategy
is"memory"
,drake
removes all targets from memory (i.e.config$envir
) except the direct dependencies of the target is about to build. This is suitable for data so large that the optimal strategy is to minimize memory consumption. Ifpruning_strategy
is"speed"
,drake
loads all the dependencies and keeps in memory everything that will eventually be a dependency of a downstream target. This strategy consumes more memory, but does more to minimize the number of times data is read from storage/disk.Related GitHub issues
Checklist
drake
's code of conduct, and I agree to follow its rules.testthat
unit tests totests/testthat
to confirm that any new features or functionality work correctly.devtools::check()