4paradigm / 4paradigm/OpenMLDB

Optimize AggrBuffer memory layout

未關閉
#1,578 0 則留言 0 個 reaction 已指派 1 人 已被 @nautaa 認領 在 GitHub 檢視
主要語言
C++
星號
1.7k
分支
331
平均合併
12 天 12 小時
30 天內合併 PR
1

描述

**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`

貢獻指南

開啟貢獻指南

研究方向

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.

由索引模型根據 Issue 內容生成。

評估

技術堆疊
cpp
領域
databases, performance
Issue 類型
重構
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。