4paradigm / 4paradigm/OpenMLDB

Optimize AggrBuffer memory layout

オープン
#1,578 コメント 0 件 リアクション 0 件 担当者 1 名 @nautaa が担当を希望しています GitHub で見る
主要言語
C++
スター
1.7k
フォーク
331
平均マージ
12日 12時間
マージ済み PR(30日)
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 を短くまとめたダイジェスト。