@@ -160,9 +160,8 @@ public PrimitiveColumnContainer(ReadOnlyMemory<byte> buffer, ReadOnlyMemory<byte
160
160
ReadOnlyDataFrameBuffer < T > dataBuffer ;
161
161
if ( buffer . IsEmpty )
162
162
{
163
- DataFrameBuffer < T > mutableBuffer = new DataFrameBuffer < T > ( ) ;
164
- mutableBuffer . EnsureCapacity ( length ) ;
165
- mutableBuffer . Length = length ;
163
+ DataFrameBuffer < T > mutableBuffer = new DataFrameBuffer < T > ( length ) ;
164
+ mutableBuffer . IncreaseSize ( length ) ;
166
165
mutableBuffer . RawSpan . Fill ( default ( T ) ) ;
167
166
dataBuffer = mutableBuffer ;
168
167
}
@@ -267,14 +266,11 @@ public void AppendMany(T? value, long count)
267
266
//Calculate how many values we can additionaly allocate and not exceed the MaxCapacity
268
267
int originalBufferLength = mutableLastBuffer . Length ;
269
268
int allocatable = ( int ) Math . Min ( remaining , ReadOnlyDataFrameBuffer < T > . MaxCapacity - originalBufferLength ) ;
270
- mutableLastBuffer . EnsureCapacity ( allocatable ) ;
269
+ mutableLastBuffer . IncreaseSize ( allocatable ) ;
271
270
272
271
//Calculate how many bytes we have additionaly allocate to store allocatable number of bits (need to take into account unused bits inside already allocated bytes)
273
272
int nullBufferAllocatable = ( originalBufferLength + allocatable + 7 ) / 8 - lastNullBitMapBuffer . Length ;
274
- lastNullBitMapBuffer . EnsureCapacity ( nullBufferAllocatable ) ;
275
-
276
- mutableLastBuffer . Length += allocatable ;
277
- lastNullBitMapBuffer . Length += nullBufferAllocatable ;
273
+ lastNullBitMapBuffer . IncreaseSize ( nullBufferAllocatable ) ;
278
274
Length += allocatable ;
279
275
280
276
if ( value . HasValue )
@@ -524,13 +520,8 @@ private List<ReadOnlyDataFrameBuffer<byte>> CloneNullBitMapBuffers()
524
520
List < ReadOnlyDataFrameBuffer < byte > > ret = new List < ReadOnlyDataFrameBuffer < byte > > ( ) ;
525
521
foreach ( ReadOnlyDataFrameBuffer < byte > buffer in NullBitMapBuffers )
526
522
{
527
- DataFrameBuffer < byte > newBuffer = new DataFrameBuffer < byte > ( ) ;
523
+ DataFrameBuffer < byte > newBuffer = new DataFrameBuffer < byte > ( buffer . ReadOnlyBuffer , buffer . Length ) ;
528
524
ret . Add ( newBuffer ) ;
529
- ReadOnlySpan < byte > span = buffer . ReadOnlySpan ;
530
- for ( int i = 0 ; i < span . Length ; i ++ )
531
- {
532
- newBuffer . Append ( span [ i ] ) ;
533
- }
534
525
}
535
526
return ret ;
536
527
}
@@ -606,14 +597,9 @@ public PrimitiveColumnContainer<T> Clone()
606
597
var ret = new PrimitiveColumnContainer < T > ( ) ;
607
598
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
608
599
{
609
- DataFrameBuffer < T > newBuffer = new DataFrameBuffer < T > ( ) ;
600
+ DataFrameBuffer < T > newBuffer = new DataFrameBuffer < T > ( buffer . ReadOnlyBuffer , buffer . Length ) ;
610
601
ret . Buffers . Add ( newBuffer ) ;
611
- ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
612
602
ret . Length += buffer . Length ;
613
- for ( int i = 0 ; i < span . Length ; i ++ )
614
- {
615
- newBuffer . Append ( span [ i ] ) ;
616
- }
617
603
}
618
604
ret . NullBitMapBuffers = CloneNullBitMapBuffers ( ) ;
619
605
ret . NullCount = NullCount ;
@@ -625,9 +611,10 @@ internal PrimitiveColumnContainer<bool> CloneAsBoolContainer()
625
611
var ret = new PrimitiveColumnContainer < bool > ( ) ;
626
612
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
627
613
{
628
- DataFrameBuffer < bool > newBuffer = new DataFrameBuffer < bool > ( ) ;
614
+ DataFrameBuffer < bool > newBuffer = new DataFrameBuffer < bool > ( buffer . Length ) ;
629
615
ret . Buffers . Add ( newBuffer ) ;
630
- newBuffer . EnsureCapacity ( buffer . Length ) ;
616
+ newBuffer . IncreaseSize ( buffer . Length ) ;
617
+
631
618
if ( typeof ( T ) == typeof ( bool ) )
632
619
{
633
620
var localBuffer = buffer ;
@@ -638,7 +625,6 @@ internal PrimitiveColumnContainer<bool> CloneAsBoolContainer()
638
625
{
639
626
newBuffer . Span . Fill ( false ) ;
640
627
}
641
- newBuffer . Length = buffer . Length ;
642
628
ret . Length += buffer . Length ;
643
629
}
644
630
ret . NullBitMapBuffers = CloneNullBitMapBuffers ( ) ;
@@ -652,9 +638,8 @@ internal PrimitiveColumnContainer<byte> CloneAsByteContainer()
652
638
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
653
639
{
654
640
ret . Length += buffer . Length ;
655
- DataFrameBuffer < byte > newBuffer = new DataFrameBuffer < byte > ( ) ;
641
+ DataFrameBuffer < byte > newBuffer = new DataFrameBuffer < byte > ( buffer . Length ) ;
656
642
ret . Buffers . Add ( newBuffer ) ;
657
- newBuffer . EnsureCapacity ( buffer . Length ) ;
658
643
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
659
644
for ( int i = 0 ; i < span . Length ; i ++ )
660
645
{
@@ -672,9 +657,8 @@ internal PrimitiveColumnContainer<sbyte> CloneAsSByteContainer()
672
657
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
673
658
{
674
659
ret . Length += buffer . Length ;
675
- DataFrameBuffer < sbyte > newBuffer = new DataFrameBuffer < sbyte > ( ) ;
660
+ DataFrameBuffer < sbyte > newBuffer = new DataFrameBuffer < sbyte > ( buffer . Length ) ;
676
661
ret . Buffers . Add ( newBuffer ) ;
677
- newBuffer . EnsureCapacity ( buffer . Length ) ;
678
662
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
679
663
for ( int i = 0 ; i < span . Length ; i ++ )
680
664
{
@@ -692,9 +676,8 @@ internal PrimitiveColumnContainer<double> CloneAsDoubleContainer()
692
676
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
693
677
{
694
678
ret . Length += buffer . Length ;
695
- DataFrameBuffer < double > newBuffer = new DataFrameBuffer < double > ( ) ;
679
+ DataFrameBuffer < double > newBuffer = new DataFrameBuffer < double > ( buffer . Length ) ;
696
680
ret . Buffers . Add ( newBuffer ) ;
697
- newBuffer . EnsureCapacity ( buffer . Length ) ;
698
681
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
699
682
for ( int i = 0 ; i < span . Length ; i ++ )
700
683
{
@@ -712,9 +695,8 @@ internal PrimitiveColumnContainer<decimal> CloneAsDecimalContainer()
712
695
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
713
696
{
714
697
ret . Length += buffer . Length ;
715
- DataFrameBuffer < decimal > newBuffer = new DataFrameBuffer < decimal > ( ) ;
698
+ DataFrameBuffer < decimal > newBuffer = new DataFrameBuffer < decimal > ( buffer . Length ) ;
716
699
ret . Buffers . Add ( newBuffer ) ;
717
- newBuffer . EnsureCapacity ( buffer . Length ) ;
718
700
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
719
701
for ( int i = 0 ; i < span . Length ; i ++ )
720
702
{
@@ -732,9 +714,8 @@ internal PrimitiveColumnContainer<short> CloneAsShortContainer()
732
714
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
733
715
{
734
716
ret . Length += buffer . Length ;
735
- DataFrameBuffer < short > newBuffer = new DataFrameBuffer < short > ( ) ;
717
+ DataFrameBuffer < short > newBuffer = new DataFrameBuffer < short > ( buffer . Length ) ;
736
718
ret . Buffers . Add ( newBuffer ) ;
737
- newBuffer . EnsureCapacity ( buffer . Length ) ;
738
719
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
739
720
for ( int i = 0 ; i < span . Length ; i ++ )
740
721
{
@@ -752,9 +733,8 @@ internal PrimitiveColumnContainer<ushort> CloneAsUShortContainer()
752
733
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
753
734
{
754
735
ret . Length += buffer . Length ;
755
- DataFrameBuffer < ushort > newBuffer = new DataFrameBuffer < ushort > ( ) ;
736
+ DataFrameBuffer < ushort > newBuffer = new DataFrameBuffer < ushort > ( buffer . Length ) ;
756
737
ret . Buffers . Add ( newBuffer ) ;
757
- newBuffer . EnsureCapacity ( buffer . Length ) ;
758
738
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
759
739
for ( int i = 0 ; i < span . Length ; i ++ )
760
740
{
@@ -772,9 +752,8 @@ internal PrimitiveColumnContainer<int> CloneAsIntContainer()
772
752
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
773
753
{
774
754
ret . Length += buffer . Length ;
775
- DataFrameBuffer < int > newBuffer = new DataFrameBuffer < int > ( ) ;
755
+ DataFrameBuffer < int > newBuffer = new DataFrameBuffer < int > ( buffer . Length ) ;
776
756
ret . Buffers . Add ( newBuffer ) ;
777
- newBuffer . EnsureCapacity ( buffer . Length ) ;
778
757
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
779
758
for ( int i = 0 ; i < span . Length ; i ++ )
780
759
{
@@ -792,9 +771,8 @@ internal PrimitiveColumnContainer<uint> CloneAsUIntContainer()
792
771
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
793
772
{
794
773
ret . Length += buffer . Length ;
795
- DataFrameBuffer < uint > newBuffer = new DataFrameBuffer < uint > ( ) ;
774
+ DataFrameBuffer < uint > newBuffer = new DataFrameBuffer < uint > ( buffer . Length ) ;
796
775
ret . Buffers . Add ( newBuffer ) ;
797
- newBuffer . EnsureCapacity ( buffer . Length ) ;
798
776
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
799
777
for ( int i = 0 ; i < span . Length ; i ++ )
800
778
{
@@ -812,9 +790,8 @@ internal PrimitiveColumnContainer<long> CloneAsLongContainer()
812
790
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
813
791
{
814
792
ret . Length += buffer . Length ;
815
- DataFrameBuffer < long > newBuffer = new DataFrameBuffer < long > ( ) ;
793
+ DataFrameBuffer < long > newBuffer = new DataFrameBuffer < long > ( buffer . Length ) ;
816
794
ret . Buffers . Add ( newBuffer ) ;
817
- newBuffer . EnsureCapacity ( buffer . Length ) ;
818
795
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
819
796
for ( int i = 0 ; i < span . Length ; i ++ )
820
797
{
@@ -832,9 +809,8 @@ internal PrimitiveColumnContainer<ulong> CloneAsULongContainer()
832
809
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
833
810
{
834
811
ret . Length += buffer . Length ;
835
- DataFrameBuffer < ulong > newBuffer = new DataFrameBuffer < ulong > ( ) ;
812
+ DataFrameBuffer < ulong > newBuffer = new DataFrameBuffer < ulong > ( buffer . Length ) ;
836
813
ret . Buffers . Add ( newBuffer ) ;
837
- newBuffer . EnsureCapacity ( buffer . Length ) ;
838
814
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
839
815
for ( int i = 0 ; i < span . Length ; i ++ )
840
816
{
@@ -852,9 +828,8 @@ internal PrimitiveColumnContainer<float> CloneAsFloatContainer()
852
828
foreach ( ReadOnlyDataFrameBuffer < T > buffer in Buffers )
853
829
{
854
830
ret . Length += buffer . Length ;
855
- DataFrameBuffer < float > newBuffer = new DataFrameBuffer < float > ( ) ;
831
+ DataFrameBuffer < float > newBuffer = new DataFrameBuffer < float > ( buffer . Length ) ;
856
832
ret . Buffers . Add ( newBuffer ) ;
857
- newBuffer . EnsureCapacity ( buffer . Length ) ;
858
833
ReadOnlySpan < T > span = buffer . ReadOnlySpan ;
859
834
for ( int i = 0 ; i < span . Length ; i ++ )
860
835
{
0 commit comments