Skip to content

ARROW-2905: [C++] Remove raw_data_ member from BufferBuilder, adaptive int builders#3863

Closed
bkietz wants to merge 7 commits intoapache:masterfrom
bkietz:ARROW-2905-investigate-if-the-data-pointers-used-in-builder-classes-improve-performance-on-hot-paths
Closed

ARROW-2905: [C++] Remove raw_data_ member from BufferBuilder, adaptive int builders#3863
bkietz wants to merge 7 commits intoapache:masterfrom
bkietz:ARROW-2905-investigate-if-the-data-pointers-used-in-builder-classes-improve-performance-on-hot-paths

Conversation

@bkietz
Copy link
Copy Markdown
Member

@bkietz bkietz commented Mar 11, 2019

Removing this member had no appreciable effect on performance in the builder benchmark:

Before
-----------------------------------------------------------------------------------------------
Benchmark                                                        Time           CPU Iterations
-----------------------------------------------------------------------------------------------
BM_BuildAdaptiveIntNoNulls/repeats:2_mean                     7910 us       7910 us         89   7.90159GB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_stddev                     93 us         93 us         89   95.2444MB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_mean        16794 us      16794 us         42   3.72172GB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_stddev        144 us        144 us         42   32.5893MB/s

After
-----------------------------------------------------------------------------------------------
Benchmark                                                        Time           CPU Iterations
-----------------------------------------------------------------------------------------------
BM_BuildAdaptiveIntNoNulls/repeats:2_mean                     7782 us       7781 us         89   8.03249GB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_stddev                     54 us         53 us         89    55.593MB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_mean        16589 us      16588 us         42   3.76803GB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_stddev        195 us        194 us         42   45.0538MB/s

@wesm
Copy link
Copy Markdown
Member

wesm commented Mar 11, 2019

Since ARROW-2905 was opened a good bit of logic is now centralized in buffer-builder.h. There are still raw pointers in use there. Do they impact builder performance? As I recall the prior discussion suggested that the behavior may have changed from gcc 4 to gcc 5+

@bkietz
Copy link
Copy Markdown
Member Author

bkietz commented Mar 11, 2019

Removing data_ from BufferBuilder also had no impact on builder performance, compiling with clang or gcc 4.8.

Details
Before:
---
BM_BuildPrimitiveArrayNoNulls/repeats:2_mean                  88797 us      88797 us          8   5.63084GB/s
BM_BuildPrimitiveArrayNoNulls/repeats:2_stddev                  316 us        315 us          8   20.4639MB/s
BM_BuildVectorNoNulls/repeats:2_mean                         333487 us     333386 us          2   1.49978GB/s
BM_BuildVectorNoNulls/repeats:2_stddev                         1785 us       1654 us          2   7.61764MB/s
BM_BuildBooleanArrayNoNulls/repeats:2_mean                   154246 us     154245 us          5    3.2426GB/s
BM_BuildBooleanArrayNoNulls/repeats:2_stddev                   3852 us       3852 us          5   82.9252MB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_mean                      7833 us       7833 us         90   7.97859GB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_stddev                      59 us         59 us         90   61.2788MB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_mean         17240 us      17240 us         41   3.62518GB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_stddev          57 us         57 us         41   12.2478MB/s
BM_BuildAdaptiveUIntNoNulls/repeats:2_mean                    16148 us      16147 us         44   7.74223GB/s
BM_BuildAdaptiveUIntNoNulls/repeats:2_stddev                    279 us        279 us         44    137.18MB/s
BM_BuildAdaptiveUIntNoNullsScalarAppend/repeats:2_mean        17703 us      17703 us         42   3.53104GB/s
BM_BuildAdaptiveUIntNoNullsScalarAppend/repeats:2_stddev        343 us        343 us         42   70.1151MB/s
BM_BuildBinaryArray/min_time:1.000_mean                      429180 us     429174 us          3   373.126MB/s
BM_BuildBinaryArray/min_time:1.000_stddev                     14007 us      14011 us          3   12.1573MB/s
BM_BuildChunkedBinaryArray/min_time:1.000_mean               450880 us     450623 us          3   356.646MB/s
BM_BuildChunkedBinaryArray/min_time:1.000_stddev              34357 us      34002 us          3    26.205MB/s
BM_BuildFixedSizeBinaryArray/min_time:3.000_mean              12786 us      12785 us        304   782.491MB/s
BM_BuildFixedSizeBinaryArray/min_time:3.000_stddev              282 us        280 us        304   16.8731MB/s
BM_BuildInt64DictionaryArrayRandom/repeats:2_mean               139 us        139 us       5172   550.433MB/s
BM_BuildInt64DictionaryArrayRandom/repeats:2_stddev               5 us          5 us       5172   18.1176MB/s
BM_BuildInt64DictionaryArraySequential/repeats:2_mean           127 us        127 us       5305   600.444MB/s
BM_BuildInt64DictionaryArraySequential/repeats:2_stddev           4 us          4 us       5305   19.5991MB/s
BM_BuildInt64DictionaryArraySimilar/repeats:2_mean              125 us        125 us       5775   612.633MB/s
BM_BuildInt64DictionaryArraySimilar/repeats:2_stddev              1 us          1 us       5775   6.84565MB/s
BM_BuildStringDictionaryArray/repeats:2_mean                    270 us        270 us       2464    370.13MB/s
BM_BuildStringDictionaryArray/repeats:2_stddev                    6 us          6 us       2464   7.72305MB/s

After:
---
BM_BuildPrimitiveArrayNoNulls/repeats:2_mean                  85409 us      85399 us          8   5.85543GB/s
BM_BuildPrimitiveArrayNoNulls/repeats:2_stddev                 1230 us       1214 us          8   85.2363MB/s
BM_BuildVectorNoNulls/repeats:2_mean                         338399 us     338375 us          2    1.4804GB/s
BM_BuildVectorNoNulls/repeats:2_stddev                        20631 us      20637 us          2   92.4534MB/s
BM_BuildBooleanArrayNoNulls/repeats:2_mean                   149051 us     149050 us          5   3.35474GB/s
BM_BuildBooleanArrayNoNulls/repeats:2_stddev                   1487 us       1486 us          5   34.2483MB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_mean                      7673 us       7673 us         90   8.14579GB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_stddev                      68 us         68 us         90   74.1493MB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_mean         17159 us      17159 us         42   3.64237GB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_stddev          32 us         33 us         42   7.06336MB/s
BM_BuildAdaptiveUIntNoNulls/repeats:2_mean                    15255 us      15255 us         47   8.19496GB/s
BM_BuildAdaptiveUIntNoNulls/repeats:2_stddev                    214 us        214 us         47   117.857MB/s
BM_BuildAdaptiveUIntNoNullsScalarAppend/repeats:2_mean        16492 us      16492 us         42   3.78968GB/s
BM_BuildAdaptiveUIntNoNullsScalarAppend/repeats:2_stddev          6 us          5 us         42   1.27803MB/s
BM_BuildBinaryArray/min_time:1.000_mean                      406517 us     406507 us          3     393.6MB/s
BM_BuildBinaryArray/min_time:1.000_stddev                      1284 us       1282 us          3    1.2388MB/s
BM_BuildChunkedBinaryArray/min_time:1.000_mean               418373 us     418367 us          3   382.445MB/s
BM_BuildChunkedBinaryArray/min_time:1.000_stddev               1748 us       1756 us          3   1.60599MB/s
BM_BuildFixedSizeBinaryArray/min_time:3.000_mean              12688 us      12688 us        339   788.213MB/s
BM_BuildFixedSizeBinaryArray/min_time:3.000_stddev              110 us        110 us        339   6.86233MB/s
BM_BuildInt64DictionaryArrayRandom/repeats:2_mean               126 us        126 us       5587   605.166MB/s
BM_BuildInt64DictionaryArrayRandom/repeats:2_stddev               0 us          0 us       5587    259.48kB/s
BM_BuildInt64DictionaryArraySequential/repeats:2_mean           119 us        119 us       5861   640.203MB/s
BM_BuildInt64DictionaryArraySequential/repeats:2_stddev           1 us          1 us       5861   2.87394MB/s
BM_BuildInt64DictionaryArraySimilar/repeats:2_mean              119 us        119 us       5816   640.997MB/s
BM_BuildInt64DictionaryArraySimilar/repeats:2_stddev              0 us          0 us       5816    2.5794MB/s
BM_BuildStringDictionaryArray/repeats:2_mean                    258 us        258 us       2726   386.734MB/s
BM_BuildStringDictionaryArray/repeats:2_stddev                    0 us          0 us       2726   577.027kB/s

Before (GCC 4.8):
---
BM_BuildPrimitiveArrayNoNulls/repeats:2_mean                  86873 us      86868 us          8   5.75615GB/s
BM_BuildPrimitiveArrayNoNulls/repeats:2_stddev                  899 us        900 us          8   61.0858MB/s
BM_BuildVectorNoNulls/repeats:2_mean                         336297 us     336296 us          2    1.4868GB/s
BM_BuildVectorNoNulls/repeats:2_stddev                         1532 us       1531 us          2   6.93017MB/s
BM_BuildBooleanArrayNoNulls/repeats:2_mean                    80581 us      80581 us          8   6.20493GB/s
BM_BuildBooleanArrayNoNulls/repeats:2_stddev                    180 us        180 us          8   14.1891MB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_mean                      7736 us       7735 us         90    8.0798GB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_stddev                      29 us         29 us         90   31.4719MB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_mean         18139 us      18139 us         39   3.44564GB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_stddev          97 us         97 us         39   18.8205MB/s
BM_BuildAdaptiveUIntNoNulls/repeats:2_mean                    15734 us      15733 us         45   7.94508GB/s
BM_BuildAdaptiveUIntNoNulls/repeats:2_stddev                    130 us        129 us         45   66.8358MB/s
BM_BuildAdaptiveUIntNoNullsScalarAppend/repeats:2_mean        17626 us      17626 us         39   3.54581GB/s
BM_BuildAdaptiveUIntNoNullsScalarAppend/repeats:2_stddev         58 us         58 us         39   12.0059MB/s
BM_BuildBinaryArray/min_time:1.000_mean                      216072 us     216068 us          7   740.523MB/s
BM_BuildBinaryArray/min_time:1.000_stddev                      1142 us       1143 us          7   3.92172MB/s
BM_BuildChunkedBinaryArray/min_time:1.000_mean               225574 us     225572 us          6   709.315MB/s
BM_BuildChunkedBinaryArray/min_time:1.000_stddev                804 us        803 us          6   2.52302MB/s
BM_BuildFixedSizeBinaryArray/min_time:3.000_mean              10410 us      10410 us        403   960.687MB/s
BM_BuildFixedSizeBinaryArray/min_time:3.000_stddev               61 us         61 us        403   5.66915MB/s
BM_BuildInt64DictionaryArrayRandom/repeats:2_mean               131 us        131 us       5305   582.796MB/s
BM_BuildInt64DictionaryArrayRandom/repeats:2_stddev               0 us          0 us       5305   1.51007MB/s
BM_BuildInt64DictionaryArraySequential/repeats:2_mean           125 us        125 us       5624   610.401MB/s
BM_BuildInt64DictionaryArraySequential/repeats:2_stddev           0 us          0 us       5624   2.16447MB/s
BM_BuildInt64DictionaryArraySimilar/repeats:2_mean              126 us        126 us       5600   607.612MB/s
BM_BuildInt64DictionaryArraySimilar/repeats:2_stddev              0 us          0 us       5600   1.32613MB/s
BM_BuildStringDictionaryArray/repeats:2_mean                    258 us        258 us       2668   386.663MB/s
BM_BuildStringDictionaryArray/repeats:2_stddev                    1 us          1 us       2668   865.525kB/s

Before (GCC 4.8):
---
BM_BuildPrimitiveArrayNoNulls/repeats:2_mean                  90210 us      87870 us          8   5.69089GB/s
BM_BuildPrimitiveArrayNoNulls/repeats:2_stddev                 1468 us       1325 us          8    87.841MB/s
BM_BuildVectorNoNulls/repeats:2_mean                         340642 us     332118 us          2   1.50549GB/s
BM_BuildVectorNoNulls/repeats:2_stddev                          123 us        281 us          2   1.30484MB/s
BM_BuildBooleanArrayNoNulls/repeats:2_mean                    82509 us      80462 us          9   6.21411GB/s
BM_BuildBooleanArrayNoNulls/repeats:2_stddev                    289 us        173 us          9    13.664MB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_mean                      7947 us       7937 us         84   7.87549GB/s
BM_BuildAdaptiveIntNoNulls/repeats:2_stddev                     169 us        156 us         84   158.191MB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_mean         18511 us      18511 us         38   3.37669GB/s
BM_BuildAdaptiveIntNoNullsScalarAppend/repeats:3_stddev         256 us        256 us         38   47.5655MB/s
BM_BuildAdaptiveUIntNoNulls/repeats:2_mean                    15795 us      15795 us         44   7.91383GB/s
BM_BuildAdaptiveUIntNoNulls/repeats:2_stddev                     56 us         56 us         44   28.6253MB/s
BM_BuildAdaptiveUIntNoNullsScalarAppend/repeats:2_mean        17957 us      17956 us         39   3.48054GB/s
BM_BuildAdaptiveUIntNoNullsScalarAppend/repeats:2_stddev          8 us          8 us         39   1.58718MB/s
BM_BuildBinaryArray/min_time:1.000_mean                      222135 us     222131 us          6     720.3MB/s
BM_BuildBinaryArray/min_time:1.000_stddev                       491 us        490 us          6   1.58598MB/s
BM_BuildChunkedBinaryArray/min_time:1.000_mean               226751 us     226746 us          6   705.639MB/s
BM_BuildChunkedBinaryArray/min_time:1.000_stddev                533 us        533 us          6   1.65635MB/s
BM_BuildFixedSizeBinaryArray/min_time:3.000_mean              10507 us      10434 us        397   958.501MB/s
BM_BuildFixedSizeBinaryArray/min_time:3.000_stddev               40 us        103 us        397   9.45298MB/s
BM_BuildInt64DictionaryArrayRandom/repeats:2_mean               131 us        128 us       5443   593.864MB/s
BM_BuildInt64DictionaryArrayRandom/repeats:2_stddev               0 us          0 us       5443   1109.92kB/s
BM_BuildInt64DictionaryArraySequential/repeats:2_mean           125 us        123 us       5728   622.031MB/s
BM_BuildInt64DictionaryArraySequential/repeats:2_stddev           1 us          1 us       5728   5.84646MB/s
BM_BuildInt64DictionaryArraySimilar/repeats:2_mean              126 us        123 us       5633   618.006MB/s
BM_BuildInt64DictionaryArraySimilar/repeats:2_stddev              0 us          0 us       5633   240.133kB/s
BM_BuildStringDictionaryArray/repeats:2_mean                    252 us        247 us       2839   405.055MB/s
BM_BuildStringDictionaryArray/repeats:2_stddev                    1 us          1 us       2839   1.51848MB/s

Orthogonal but noteworthy: BooleanBuilder seems to do much better under GCC 4.8

@wesm
Copy link
Copy Markdown
Member

wesm commented Mar 12, 2019

Thanks for looking further into this! I would like to add a few new benchmarks to be a bit more paranoid. Most of those benchmarks are vector appends and so aren't really going to be affected by this change (compared with scalar append paths)

@wesm
Copy link
Copy Markdown
Member

wesm commented Mar 12, 2019

I can look into that, it's not urgent

@bkietz
Copy link
Copy Markdown
Member Author

bkietz commented Mar 12, 2019

Well then should we close this PR until we write scalar append benchmarks?

@wesm
Copy link
Copy Markdown
Member

wesm commented Mar 12, 2019

I can write it today

@wesm
Copy link
Copy Markdown
Member

wesm commented Mar 12, 2019

I can't figure out how to disable Turbo Boost on my Thinkpad P1 so take the benchmarks with a grain of salt, but I don't see an appreciable difference so that's good =) Some of the noise seems to be due to memory allocation

before:

------------------------------------------------------------------------------------------------------
Benchmark                                                               Time           CPU Iterations
------------------------------------------------------------------------------------------------------
BM_BuildPrimitiveArrayNoNulls/min_time:1.000                        97965 us      97979 us         14   5.10316GB/s
BM_BuildPrimitiveArrayNoNullsScalarUnsafeAppend/min_time:5.000     213374 us     213379 us         32   2.34325GB/s
BM_BuildPrimitiveArrayNoNullsScalarSafeAppend/min_time:5.000       205611 us     205594 us         33   2.43198GB/s

after:

------------------------------------------------------------------------------------------------------
Benchmark                                                               Time           CPU Iterations
------------------------------------------------------------------------------------------------------
BM_BuildPrimitiveArrayNoNulls/min_time:1.000                        99425 us      99389 us         14   5.03073GB/s
BM_BuildPrimitiveArrayNoNullsScalarUnsafeAppend/min_time:5.000     206839 us     206790 us         34   2.41791GB/s
BM_BuildPrimitiveArrayNoNullsScalarSafeAppend/min_time:5.000       205519 us     205496 us         34   2.43313GB/s

BTW I have started normalizing microbenchmarks to use MinTime(1.0) or similar. I think this may yield better quality / more consistent results than "repeats"

Copy link
Copy Markdown
Member

@xhochy xhochy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, LGTM

@bkietz
Copy link
Copy Markdown
Member Author

bkietz commented Mar 12, 2019

@wesm wesm force-pushed the ARROW-2905-investigate-if-the-data-pointers-used-in-builder-classes-improve-performance-on-hot-paths branch from f6cdeb8 to 6ace172 Compare March 12, 2019 20:40
@wesm wesm changed the title ARROW-2905 [C++]: remove superfluous raw_data_ member ARROW-2905: [C++] Remove raw_data_ member from BufferBuilder, adaptive int builders Mar 12, 2019
@wesm
Copy link
Copy Markdown
Member

wesm commented Mar 12, 2019

Hm looks like there are some valgrind issues

https://travis-ci.org/apache/arrow/jobs/505429629#L4904

@bkietz bkietz force-pushed the ARROW-2905-investigate-if-the-data-pointers-used-in-builder-classes-improve-performance-on-hot-paths branch from 6ace172 to 77c78ee Compare March 14, 2019 19:37
@wesm wesm force-pushed the ARROW-2905-investigate-if-the-data-pointers-used-in-builder-classes-improve-performance-on-hot-paths branch from 49c0498 to d460788 Compare March 17, 2019 19:15
@wesm
Copy link
Copy Markdown
Member

wesm commented Mar 17, 2019

It's hard to really tell whether this is causing an impact or not. The most affected benchmarks by this change are the BinaryBuilder benchmarks, because they append 10-length strings to create an approx 160MB data structure. I increased these benchmarks to run with MinTime 10 seconds, made sure to disable CPU throttling, and I'm showing roughly 1-3% perf degradation

before:

------------------------------------------------------------------------------------
Benchmark                                             Time           CPU Iterations
------------------------------------------------------------------------------------
BM_BuildBinaryArray/min_time:10.000              495018 us     494879 us         28   323.311MB/s
BM_BuildChunkedBinaryArray/min_time:10.000       370306 us     370071 us         37    432.35MB/s
BM_BuildFixedSizeBinaryArray/min_time:10.000      10139 us      10138 us       1000   986.411MB/s

after

------------------------------------------------------------------------------------
Benchmark                                             Time           CPU Iterations
------------------------------------------------------------------------------------
BM_BuildBinaryArray/min_time:10.000              496589 us     496595 us         28   322.194MB/s
BM_BuildChunkedBinaryArray/min_time:10.000       375714 us     375717 us         37   425.852MB/s
BM_BuildFixedSizeBinaryArray/min_time:10.000      10489 us      10489 us       1000   953.402MB/s

This is probably much ado about nothing, but I'm concerned that we lack appropriate benchmarking infrastructure to evaluate this decision. Since there's an effort to establish better benchmarking systems in the next couple of months, I recommend we do not merge this patch now and wait until we can get more data points (using this patch to help determine whether we have a rigorous process in place to determine whether a patch creates a statistically significant performance improvement or regression)

@codecov-io
Copy link
Copy Markdown

Codecov Report

Merging #3863 into master will increase coverage by 0.8%.
The diff coverage is 100%.

Impacted file tree graph

@@            Coverage Diff            @@
##           master    #3863     +/-   ##
=========================================
+ Coverage   87.76%   88.57%   +0.8%     
=========================================
  Files         727      593    -134     
  Lines       89507    79926   -9581     
  Branches     1252        0   -1252     
=========================================
- Hits        78557    70791   -7766     
+ Misses      10836     9135   -1701     
+ Partials      114        0    -114
Impacted Files Coverage Δ
cpp/src/arrow/array/builder_adaptive.h 93.75% <ø> (ø) ⬆️
cpp/src/arrow/array/builder_adaptive.cc 81.14% <100%> (+0.07%) ⬆️
cpp/src/arrow/buffer-test.cc 100% <100%> (ø) ⬆️
cpp/src/arrow/array-test.cc 100% <100%> (ø) ⬆️
cpp/src/arrow/buffer-builder.h 99.37% <100%> (-0.01%) ⬇️
cpp/src/arrow/csv/column-builder.cc 95.12% <0%> (-1.83%) ⬇️
cpp/src/arrow/visitor_inline.h 87.35% <0%> (-1.15%) ⬇️
cpp/src/arrow/array.cc 89.94% <0%> (-0.99%) ⬇️
cpp/src/arrow/ipc/writer.cc 94.58% <0%> (-0.38%) ⬇️
go/arrow/math/uint64_amd64.go
... and 135 more

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d95208f...d460788. Read the comment docs.

@pitrou
Copy link
Copy Markdown
Member

pitrou commented Mar 18, 2019

The AdaptiveIntBuilder changes look ok to me, because they occur in code paths which operate on bulk data. The BufferBuilder changes I think are a bit risky performance-wise: perhaps the user has reserved the buffer upfront and is appending lots of small pieces of data.

Copy link
Copy Markdown
Contributor

@fsaintjacques fsaintjacques left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's issues with ignoring AllocateResizableBuffer return status.

@bkietz bkietz force-pushed the ARROW-2905-investigate-if-the-data-pointers-used-in-builder-classes-improve-performance-on-hot-paths branch from d460788 to 580d284 Compare March 19, 2019 21:16
std::shared_ptr<ResizableBuffer> buffer_;
MemoryPool* pool_;
uint8_t* data_;
int64_t capacity_;
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just curious, if data_ can be replaced by buffer->data(), then capacity_ can also be replaced by buffer_->capacity() right?

@wesm
Copy link
Copy Markdown
Member

wesm commented May 17, 2019

This PR seems like a good test case for the benchmark reporter. We also need to look at the performance on Windows since MSVC might be doing different things

@emkornfield
Copy link
Copy Markdown
Contributor

@bkietz can you rebase, and then use Ursabot to check?

@wesm
Copy link
Copy Markdown
Member

wesm commented Jun 10, 2019

Closing this stale PR, please reopen when it gets picked up again

@wesm wesm closed this Jun 10, 2019
@bkietz bkietz deleted the ARROW-2905-investigate-if-the-data-pointers-used-in-builder-classes-improve-performance-on-hot-paths branch February 25, 2021 16:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

8 participants