apache / apache/arrow-java

[Java] Potentially inefficient variable-width vector reallocation

未關閉
#241 3 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視
Type: enhancement
主要語言
Java
星號
94
分支
152
平均合併
3 天 16 小時
30 天內合併 PR
11

描述

In several places in the Java codebase you can see this kind of pattern:
```java

while (vector.getDataBuffer().capacity() < toCapacity) {
vector.reallocDataBuffer();
}
```

In the event that a much larger capacity is requested, this will spuriously make several reallocations (doubling the capacity each time).

It would probably be more efficient to reallocate directly to satisfy the desired capacity.

Coincidentally, there's a `reallocDataBuffer` overload that seems to do just that.

**Reporter**: [Antoine Pitrou](https://issues.apache.org/jira/browse/ARROW-17919) / @pitrou

**Note**: *This issue was originally created as [ARROW-17919](https://issues.apache.org/jira/browse/ARROW-17919). Please see the [migration documentation](https://github.com/apache/arrow/issues/14542) for further details.*

貢獻指南

開啟貢獻指南

研究方向

先找出會迴圈處理 vector.getDataBuffer().capacity() 並呼叫 reallocDataBuffer() 的 Java 呼叫點,接著檢查接受所需容量的 reallocDataBuffer 多載。更新受影響的路徑,讓要求的較大容量能直接獲得滿足,並確認相關的 Java 測試涵蓋重新配置行為。

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

評估

技術堆疊
java
領域
performance
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
35/100

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

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