New C++ api#8651
Conversation
Merging this PR will not alter performance
|
| Mode | Benchmark | BASE |
HEAD |
Efficiency | |
|---|---|---|---|---|---|
| ❌ | Simulation | chunked_varbinview_into_canonical[(1000, 10)] |
170 µs | 206.1 µs | -17.52% |
| ❌ | Simulation | compare_int_constant |
268.4 µs | 298.5 µs | -10.08% |
| ⚡ | Simulation | chunked_varbinview_canonical_into[(1000, 10)] |
190.4 µs | 154.5 µs | +23.18% |
| ⚡ | Simulation | bitwise_not_vortex_buffer_mut[128] |
273.6 ns | 244.4 ns | +11.93% |
Tip
Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.
Comparing myrrc/cxx2 (347b89d) with develop (dd4ab89)
Footnotes
-
4 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩
05babc3 to
5795c45
Compare
a044015 to
a5c7567
Compare
66bfb31 to
de2512a
Compare
| * Estimated count. Throws if not known(). For inexact estimates this is | ||
| * is an upper bound. | ||
| */ | ||
| uint64_t value() const; |
There was a problem hiding this comment.
Not sure I understand this API. Why not just have value? What's the flow when the caller passes in the fallback. And why does that need to handled in a method of Estimate?
|
|
||
| // List accessors. Valid only on List and FixedSizeList dtypes | ||
|
|
||
| DataType list_element() const; |
There was a problem hiding this comment.
Every public fn in this PR added needs docs.
|
|
||
| private: | ||
| void reset() noexcept { | ||
| if (!path_.empty()) { |
There was a problem hiding this comment.
Do we care about checking the error in tests?
| return BytesView(std::move(canonical), std::move(validity), n); | ||
| } | ||
|
|
||
| Array make_struct( |
There was a problem hiding this comment.
Why actually not && in the signature for the return type?
| } | ||
|
|
||
| void StructArrayBuilder::Deleter::operator()( | ||
| vx_struct_column_builder* ptr) const noexcept { |
There was a problem hiding this comment.
What's our rule of thumb for sprinkling noexcept?
| } | ||
| session_ = std::move(other.session_); | ||
| stream_ = other.stream_; | ||
| other.stream_ = ArrowArrayStream{}; |
There was a problem hiding this comment.
Also here we do why change other? other.stream_ = ArrowArrayStream{};
FFI changes: