queryverse / queryverse/Query.jl

Decrease memory usage of iterator implementations

Open
#30 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

performance
Dominant language
Julia
Stars
403
Forks
48
Avg merge
3d 6h
Merged PRs (30d)
6

Description

Quite a number of the Query iterators allocate and populate a result array in the start function call and essentially perform all the work of the iterator in the start function. Many of these could be rewritten to not use such a result array, and instead get elements from their source iterator in calls to the next function.

Such rewrites should be done for these iterators:

  • EnumerableGroupJoin
  • EnumerableGroupBy
  • EnumerableSelectMany
  • EnumerableJoin

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the Query iterator implementations for EnumerableGroupJoin, EnumerableGroupBy, EnumerableSelectMany, and EnumerableJoin, then inspect how their start and next functions use source iterators and result arrays. Done means these four iterators no longer allocate and populate a result array in start, instead retrieving elements through next.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
data
Issue type
Refactor
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.