tursodatabase/turso
Auf GitHub ansehenImprove OwnedValue Register in vdbe allocations
Open
#1.236 geöffnet am 2. Apr. 2025
good first issueperformance
Repository-Metriken
- Stars
- (19.103 Stars)
- PR-Merge-Metriken
- (PR-Metriken ausstehend)
Beschreibung
The idea is to make OwnedRecord register an enum that has a buffer to store all values. For example right now if you replace OwnedValue::Integer with OwnedValue::Float it will deallocate OwnedValue::Integer which is unnecessary.
This can help with stuff with affinity for example, let's say you update a OnwedValue::Text to a OwnedValue::intenger, then you would have to allocate a new OwnedValue and dispose of the buffer in Text.
So in pseudo code:
enum OwnedValueType {
Integer,
Float,
Text,
Blob,
Null
}
struct OwnedValue {
buffer: Vec<u8>,
type: OwnedValueType,
}
impl OwnedValue {
pub fn set_text(&[u8]) {
// 1. increase self.buffer if necessary
// 2. clear buffer
// 3. set buffer with data
}
}