Ok guys, let's see the numbers from very simple FPC tests
Type
PItem = ^TItem;
TItem = record
id : integer;
x, y : integer;
end;
// Records
TManager = record
Count : integer;
List : array of TItem;
end;
// Classes
TCItem = Class
id : integer;
x, y : integer;
end;
TCManager = Class
Count : integer;
List : array of TCItem;
end;
// Pointers to record
PPManager = ^TPManager;
TPManager = record
Count : integer;
List : array of PItem;
end;
FILL TEST: [1000 items]
Records: 0,0000256353031299197 s
Classes: 0,000318480942414061 s
Pointers: 0,000087160030641727 s
QUICKSORT TEST: [1000 items]
Records: 0,000342608286536339 s
Classes: 0,000292845639284142 s
Pointers: 0,000272940580383263 s
FREE MEM TEST: [1000 items]
Records: 0,0000229209769161635 s
Classes: 0,000117922394397631 s
Pointers: 0,0000799218274050438 s
------------------------------------------------------
FILL TEST: [100000 items]
Records: 0,000991690832870043 s
Classes: 0,0151803825522516 s
Pointers: 0,00582843748591348 s
QUICKSORT TEST: [100000 items]
Records: 0,010936546812315 s
Classes: 0,0120403287605367 s
Pointers: 0,00923714933962406 s
FREE MEM TEST: [100000 items]
Records: 0,000565564287109522 s
Classes: 0,00705573001968356 s
Pointers: 0,00362237615133803 s
------------------------------------------------------
FILL TEST: [10000000 items]
Records: 0,0609045929150976 s
Classes: 0,671325713148588 s
Pointers: 0,2505645791059 s
QUICKSORT TEST: [10000000 items]
Records: 1,44320108061496 s
Classes: 3,1377283567959 s
Pointers: 2,63237050861869 s
FREE MEM TEST: [10000000 items]
Records: 0,0520024844495768 s
Classes: 1,54121744059482 s
Pointers: 1,47699562507726 s
So, some differences are there
Later I will add something what would simulate a game.
I expected a better performance in "array of records" vs "array of pointers". Maybe there is a mistake somewhere.
Can test it please someone with older PC? (these numbers are from i7 3.40 GHz)