@@ -67,9 +67,8 @@ public PrimitiveColumnContainer(ReadOnlyMemory<byte> buffer, ReadOnlyMemory<byte
67
67
ReadOnlyDataFrameBuffer < T > dataBuffer ;
68
68
if ( buffer . IsEmpty )
69
69
{
70
- DataFrameBuffer < T > mutableBuffer = new DataFrameBuffer < T > ( ) ;
71
- mutableBuffer . EnsureCapacity ( length ) ;
72
- mutableBuffer . Length = length ;
70
+ DataFrameBuffer < T > mutableBuffer = new DataFrameBuffer < T > ( length ) ;
71
+ mutableBuffer . IncreaseSize ( length ) ;
73
72
mutableBuffer . RawSpan . Fill ( default ( T ) ) ;
74
73
dataBuffer = mutableBuffer ;
75
74
}
@@ -172,15 +171,12 @@ public void AppendMany(T? value, long count)
172
171
173
172
//Calculate how many values we can additionaly allocate and not exceed the MaxCapacity
174
173
int allocatable = ( int ) Math . Min ( remaining , ReadOnlyDataFrameBuffer < T > . MaxCapacity - mutableLastBuffer . Length ) ;
175
- mutableLastBuffer . EnsureCapacity ( allocatable ) ;
174
+ mutableLastBuffer . IncreaseSize ( allocatable ) ;
176
175
177
176
DataFrameBuffer < byte > lastNullBitMapBuffer = NullBitMapBuffers . GetOrCreateMutable ( NullBitMapBuffers . Count - 1 ) ;
178
177
int nullBufferAllocatable = ( allocatable + 7 ) / 8 ;
179
- lastNullBitMapBuffer . EnsureCapacity ( nullBufferAllocatable ) ;
178
+ lastNullBitMapBuffer . IncreaseSize ( nullBufferAllocatable ) ;
180
179
181
-
182
- mutableLastBuffer . Length += allocatable ;
183
- lastNullBitMapBuffer . Length += nullBufferAllocatable ;
184
180
Length += allocatable ;
185
181
186
182
if ( value . HasValue )
@@ -436,13 +432,8 @@ private List<ReadOnlyDataFrameBuffer<byte>> CloneNullBitMapBuffers()
436
432
List < ReadOnlyDataFrameBuffer < byte > > ret = new List < ReadOnlyDataFrameBuffer < byte > > ( ) ;
437
433
foreach ( ReadOnlyDataFrameBuffer < byte > buffer in NullBitMapBuffers )
438
434
{
439
- DataFrameBuffer < byte > newBuffer = new DataFrameBuffer < byte > ( ) ;
435
+ DataFrameBuffer < byte > newBuffer = new DataFrameBuffer < byte > ( buffer . ReadOnlyBuffer , buffer . Length ) ;
440
436
ret . Add ( newBuffer ) ;
441
- ReadOnlySpan < byte > span = buffer . ReadOnlySpan ;
442
- for ( int i = 0 ; i < span . Length ; i ++ )
443
- {
444
- newBuffer . Append ( span [ i ] ) ;
445
- }
446
437
}
447
438
return ret ;
448
439
}
@@ -518,14 +509,9 @@ public PrimitiveColumnContainer<T> Clone()
518
509
var ret = new PrimitiveColumnContainer < T > ( ) ;
519
510
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
520
511
{
521
- DataFrameBuffer < T > newBuffer = new DataFrameBuffer < T > ( ) ;
512
+ DataFrameBuffer < T > newBuffer = new DataFrameBuffer < T > ( buffer . ReadOnlyBuffer , buffer . Length ) ;
522
513
ret . Buffers . Add ( newBuffer ) ;
523
- ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
524
514
ret . Length += buffer . Length ;
525
- for ( int i = 0 ; i < span . Length ; i ++ )
526
- {
527
- newBuffer . Append ( span [ i ] ) ;
528
- }
529
515
}
530
516
ret . NullBitMapBuffers = CloneNullBitMapBuffers ( ) ;
531
517
ret . NullCount = NullCount ;
@@ -537,9 +523,10 @@ internal PrimitiveColumnContainer<bool> CloneAsBoolContainer()
537
523
var ret = new PrimitiveColumnContainer < bool > ( ) ;
538
524
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
539
525
{
540
- DataFrameBuffer < bool > newBuffer = new DataFrameBuffer < bool > ( ) ;
526
+ DataFrameBuffer < bool > newBuffer = new DataFrameBuffer < bool > ( buffer . Length ) ;
541
527
ret . Buffers . Add ( newBuffer ) ;
542
- newBuffer . EnsureCapacity ( buffer . Length ) ;
528
+ newBuffer . IncreaseSize ( buffer . Length ) ;
529
+
543
530
if ( typeof ( T ) == typeof ( bool ) )
544
531
{
545
532
var localBuffer = buffer ;
@@ -550,7 +537,6 @@ internal PrimitiveColumnContainer<bool> CloneAsBoolContainer()
550
537
{
551
538
newBuffer . Span . Fill ( false ) ;
552
539
}
553
- newBuffer . Length = buffer . Length ;
554
540
ret . Length += buffer . Length ;
555
541
}
556
542
ret . NullBitMapBuffers = CloneNullBitMapBuffers ( ) ;
@@ -564,9 +550,8 @@ internal PrimitiveColumnContainer<byte> CloneAsByteContainer()
564
550
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
565
551
{
566
552
ret . Length += buffer . Length ;
567
- DataFrameBuffer < byte > newBuffer = new DataFrameBuffer < byte > ( ) ;
553
+ DataFrameBuffer < byte > newBuffer = new DataFrameBuffer < byte > ( buffer . Length ) ;
568
554
ret . Buffers . Add ( newBuffer ) ;
569
- newBuffer . EnsureCapacity ( buffer . Length ) ;
570
555
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
571
556
for ( int i = 0 ; i < span . Length ; i ++ )
572
557
{
@@ -584,9 +569,8 @@ internal PrimitiveColumnContainer<sbyte> CloneAsSByteContainer()
584
569
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
585
570
{
586
571
ret . Length += buffer . Length ;
587
- DataFrameBuffer < sbyte > newBuffer = new DataFrameBuffer < sbyte > ( ) ;
572
+ DataFrameBuffer < sbyte > newBuffer = new DataFrameBuffer < sbyte > ( buffer . Length ) ;
588
573
ret . Buffers . Add ( newBuffer ) ;
589
- newBuffer . EnsureCapacity ( buffer . Length ) ;
590
574
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
591
575
for ( int i = 0 ; i < span . Length ; i ++ )
592
576
{
@@ -604,9 +588,8 @@ internal PrimitiveColumnContainer<double> CloneAsDoubleContainer()
604
588
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
605
589
{
606
590
ret . Length += buffer . Length ;
607
- DataFrameBuffer < double > newBuffer = new DataFrameBuffer < double > ( ) ;
591
+ DataFrameBuffer < double > newBuffer = new DataFrameBuffer < double > ( buffer . Length ) ;
608
592
ret . Buffers . Add ( newBuffer ) ;
609
- newBuffer . EnsureCapacity ( buffer . Length ) ;
610
593
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
611
594
for ( int i = 0 ; i < span . Length ; i ++ )
612
595
{
@@ -624,9 +607,8 @@ internal PrimitiveColumnContainer<decimal> CloneAsDecimalContainer()
624
607
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
625
608
{
626
609
ret . Length += buffer . Length ;
627
- DataFrameBuffer < decimal > newBuffer = new DataFrameBuffer < decimal > ( ) ;
610
+ DataFrameBuffer < decimal > newBuffer = new DataFrameBuffer < decimal > ( buffer . Length ) ;
628
611
ret . Buffers . Add ( newBuffer ) ;
629
- newBuffer . EnsureCapacity ( buffer . Length ) ;
630
612
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
631
613
for ( int i = 0 ; i < span . Length ; i ++ )
632
614
{
@@ -644,9 +626,8 @@ internal PrimitiveColumnContainer<short> CloneAsShortContainer()
644
626
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
645
627
{
646
628
ret . Length += buffer . Length ;
647
- DataFrameBuffer < short > newBuffer = new DataFrameBuffer < short > ( ) ;
629
+ DataFrameBuffer < short > newBuffer = new DataFrameBuffer < short > ( buffer . Length ) ;
648
630
ret . Buffers . Add ( newBuffer ) ;
649
- newBuffer . EnsureCapacity ( buffer . Length ) ;
650
631
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
651
632
for ( int i = 0 ; i < span . Length ; i ++ )
652
633
{
@@ -664,9 +645,8 @@ internal PrimitiveColumnContainer<ushort> CloneAsUShortContainer()
664
645
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
665
646
{
666
647
ret . Length += buffer . Length ;
667
- DataFrameBuffer < ushort > newBuffer = new DataFrameBuffer < ushort > ( ) ;
648
+ DataFrameBuffer < ushort > newBuffer = new DataFrameBuffer < ushort > ( buffer . Length ) ;
668
649
ret . Buffers . Add ( newBuffer ) ;
669
- newBuffer . EnsureCapacity ( buffer . Length ) ;
670
650
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
671
651
for ( int i = 0 ; i < span . Length ; i ++ )
672
652
{
@@ -684,9 +664,8 @@ internal PrimitiveColumnContainer<int> CloneAsIntContainer()
684
664
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
685
665
{
686
666
ret . Length += buffer . Length ;
687
- DataFrameBuffer < int > newBuffer = new DataFrameBuffer < int > ( ) ;
667
+ DataFrameBuffer < int > newBuffer = new DataFrameBuffer < int > ( buffer . Length ) ;
688
668
ret . Buffers . Add ( newBuffer ) ;
689
- newBuffer . EnsureCapacity ( buffer . Length ) ;
690
669
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
691
670
for ( int i = 0 ; i < span . Length ; i ++ )
692
671
{
@@ -704,9 +683,8 @@ internal PrimitiveColumnContainer<uint> CloneAsUIntContainer()
704
683
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
705
684
{
706
685
ret . Length += buffer . Length ;
707
- DataFrameBuffer < uint > newBuffer = new DataFrameBuffer < uint > ( ) ;
686
+ DataFrameBuffer < uint > newBuffer = new DataFrameBuffer < uint > ( buffer . Length ) ;
708
687
ret . Buffers . Add ( newBuffer ) ;
709
- newBuffer . EnsureCapacity ( buffer . Length ) ;
710
688
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
711
689
for ( int i = 0 ; i < span . Length ; i ++ )
712
690
{
@@ -724,9 +702,8 @@ internal PrimitiveColumnContainer<long> CloneAsLongContainer()
724
702
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
725
703
{
726
704
ret . Length += buffer . Length ;
727
- DataFrameBuffer < long > newBuffer = new DataFrameBuffer < long > ( ) ;
705
+ DataFrameBuffer < long > newBuffer = new DataFrameBuffer < long > ( buffer . Length ) ;
728
706
ret . Buffers . Add ( newBuffer ) ;
729
- newBuffer . EnsureCapacity ( buffer . Length ) ;
730
707
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
731
708
for ( int i = 0 ; i < span . Length ; i ++ )
732
709
{
@@ -744,9 +721,8 @@ internal PrimitiveColumnContainer<ulong> CloneAsULongContainer()
744
721
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
745
722
{
746
723
ret . Length += buffer . Length ;
747
- DataFrameBuffer < ulong > newBuffer = new DataFrameBuffer < ulong > ( ) ;
724
+ DataFrameBuffer < ulong > newBuffer = new DataFrameBuffer < ulong > ( buffer . Length ) ;
748
725
ret . Buffers . Add ( newBuffer ) ;
749
- newBuffer . EnsureCapacity ( buffer . Length ) ;
750
726
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
751
727
for ( int i = 0 ; i < span . Length ; i ++ )
752
728
{
@@ -764,9 +740,8 @@ internal PrimitiveColumnContainer<float> CloneAsFloatContainer()
764
740
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
765
741
{
766
742
ret . Length += buffer . Length ;
767
- DataFrameBuffer < float > newBuffer = new DataFrameBuffer < float > ( ) ;
743
+ DataFrameBuffer < float > newBuffer = new DataFrameBuffer < float > ( buffer . Length ) ;
768
744
ret . Buffers . Add ( newBuffer ) ;
769
- newBuffer . EnsureCapacity ( buffer . Length ) ;
770
745
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
771
746
for ( int i = 0 ; i < span . Length ; i ++ )
772
747
{
0 commit comments