4paradigm / 4paradigm/OpenMLDB

Optimize AggrBuffer memory layout

Aperta
#1,578 0 commenti 0 reazioni 1 assegnatario Rivendicata da @nautaa Vedi su GitHub
Lingua principale
C++
Stelle
1.7k
Fork
331
Merge medio
12g 12h
PR unite (30g)
1

Descrizione

**Describe the feature you'd like**

Now `AggrBuffer` is defined as follows:

```
union AggrVal {
int16_t vsmallint;
int32_t vint;
int64_t vlong;
float vfloat;
double vdouble;
};

struct AggrBuffer {
AggrVal aggr_val_;
int64_t ts_begin_;
int64_t ts_end_;
int32_t aggr_cnt_;
uint64_t binlog_offset_;
AggrBuffer() : aggr_val_(), ts_begin_(-1), ts_end_(0), aggr_cnt_(0), binlog_offset_(0) {}
void clear() {
memset(&aggr_val_, 0, sizeof(aggr_val_));
ts_begin_ = -1;
ts_end_ = 0;
aggr_cnt_ = 0;
binlog_offset_ = 0;
}
};
struct AggrBufferLocked {
std::unique_ptr mu_;
AggrBuffer buffer_;
}
```

Can use a more efficient way to do it.

**Additional context**
`src/storage/aggregator.h`

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

The issue points to src/storage/aggregator.h where AggrBuffer is defined. Start by examining the current memory layout and understanding how AggrBuffer is used in the codebase. Look for opportunities to reduce padding or reorder fields for better cache efficiency. Check if there are any benchmarks or tests related to aggregation performance to validate changes. Ensure the new layout maintains the same semantics and that all usages are updated accordingly.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
cpp
Ambito
databases, performance
Tipo di issue
Refactoring
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
45/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.