-
Notifications
You must be signed in to change notification settings - Fork 645
Shrink AV by 8 bytes and AT by 16 #1047
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
Conversation
b4ffa79 to
218e64e
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Very nice. I see why this took longer than expected, this is the sort of thing that gets everywhere.
My only real concern right now would be that this could result in ArrayValues. I'm not aware of such loops off the top of my head, and I don't see any methods changed in this PR that expose such an interface for ArrayValue, so I don't think it's a problem.
| /// | ||
| /// We box these up as they allow us to shrink `AlgebraicValue`. | ||
| U128(u128), | ||
| U128(Packed<u128>), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This may inhibit SIMD optimizations for i/u128. Fortunately, that doesn't matter in the slightest -- packing AV and AT is way more important.
70b4e57 to
b71e8c1
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is fine in principle, but let's be deferential to higher prio things about merging this.
b71e8c1 to
b27314a
Compare
|
Commitlog has merged, so going ahead and merging this. |
Description of Changes
This primarily shrinks the size of types
AlgebraicValuefrom 32 bytes to 24 andAlgebraicTypefrom 32 to 16.The size of some other types are also shrunk, notably, table, column, index, sequence, etc. definitions are shrunk by moving from
StringtoBox<str>. Moreover,ProductValueis shrunk to 16 bytes, a type that is used frequently in hot places.Benchmarks below relative to based master, run on i7-7700K, 64GB.
API and ABI breaking changes
None
Expected complexity level and risk
2
Testing
No semantic changes, existing tests should suffice.