-
Notifications
You must be signed in to change notification settings - Fork 105
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
Split DatabaseTableUpdate
in deletes/inserts vecs
#1019
Conversation
@gefjon has already reviewed the contents of this but @joshua-spacetime probably also wants a look. |
Bot test resultsConclusion: ✔️ Possibly some small improvements? Commits testedbefore:
after:
|
Can you expand on this point? Which allocations does this allow us to get rid of and where? |
2. `SourceExpr::{MemTable -> InMemory}` 3. clariy some commentary re. SourceExpr/SourceSet and friends 4. cleanup: simplify `compile_select_eval_incr` 5. remove ProgramStore; twas dead code.
0fc5b24
to
bc9840f
Compare
3fb3e4b
to
8c7df57
Compare
Description of Changes
DatabaseTableUpdate
is split into two separate vectors for deletes / inserts. This was helpful for performance as it meant we could avoid some temporary allocations.Vec<_>
s insideeval_{all, lhs, rhs}
are removed. Instead, we carry iterators as long as possible. This helped performance.DatabaseTableUpdateCow
mirrorsDatabaseTableUpdate
. These are only fused at the very moment we convert to bsatn/json. This did not affect performance, but should in theory do less work as well as being cleaner.Performance
Commit 3 should have no noticable perf impact and is mostly cleanup.
Relative to master, on i7-7700K, 64gb ram.
API and ABI breaking changes
None
Expected complexity level and risk
2
Testing
No changes in semantics.