Skip to content

Commit a23d896

Browse files
committed
optimized Reverse and Shuffle
1 parent 3f5b10b commit a23d896

File tree

3 files changed

+536
-46
lines changed

3 files changed

+536
-46
lines changed

Source/Base/Collections/Spring.Collections.Base.pas

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2586,12 +2586,12 @@ function TIteratorBase<T>.ToArray: TArray<T>;
25862586
TIteratorKind.Reversed:
25872587
begin
25882588
Result := fIterator.Source.ToArray;
2589-
TArray.Reverse<T>(Result);
2589+
TArray.Reverse<T>(Result, DynArrayHigh(Result));
25902590
end;
25912591
TIteratorKind.Shuffled:
25922592
begin
25932593
Result := fIterator.Source.ToArray;
2594-
TArray.Shuffle<T>(Result);
2594+
TArray.Shuffle<T>(Result, DynArrayHigh(Result));
25952595
end;
25962596
else
25972597
Result := inherited ToArray;
@@ -2976,7 +2976,7 @@ function TIteratorRec<T>.ToArray: Boolean;
29762976
TIteratorKind.Reversed:
29772977
Count := DynArrayLength(Items);
29782978
TIteratorKind.Shuffled:
2979-
TArray.Shuffle<T>(Items);
2979+
TArray.Shuffle<T>(Items, DynArrayHigh(Items));
29802980
end;
29812981
Result := True;
29822982
end;

Source/Base/Collections/Spring.Collections.Lists.pas

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,7 +1334,7 @@ procedure TAbstractArrayList<T>.Reverse;
13341334
{$Q-}
13351335
Inc(fVersion);
13361336
{$IFDEF OVERFLOWCHECKS_ON}{$Q+}{$ENDIF}
1337-
TArray.Reverse<T>(fItems, 0, Count);
1337+
TArray.Reverse<T>(fItems, Count - 1);
13381338

13391339
Reset;
13401340
end;
@@ -1349,7 +1349,7 @@ procedure TAbstractArrayList<T>.Reverse(index, count: Integer);
13491349
{$Q-}
13501350
Inc(fVersion);
13511351
{$IFDEF OVERFLOWCHECKS_ON}{$Q+}{$ENDIF}
1352-
TArray.Reverse<T>(fItems, index, count);
1352+
TArray.Reverse<T>(@fItems[index], count - 1);
13531353

13541354
Reset;
13551355
end;

0 commit comments

Comments
 (0)