Are there big gains in PERFORMANCE by distributing heap memory in advance and gradually increasing it?
Consider a VERY simplified example below:
byte * heapSpace = malloc (1 000 000);
int currentWriteSpot = 0;
struct A {
int x;
byte * extraSpace;
int extraSpaceLength;
};
A a1;
a1.x = 2;
a1.extraSpace = heapSpace + currentWriteSpot;
a1.extraSpaceLength = 10;
currentWriteSpot += 10;
A a2;
a2.x = 24;
a2.extraSpace = heapSpace + currentWriteSpot;
a2.extraSpaceLength = 120;
currentWriteSpot += 120;
for ( ... ) {
}
free (heapSpace);
VS:
...
a1.extraSpace = malloc ( 10 );
a2.extraSpace = malloc ( 120 );
a3...
a4...
...
free (a1.extraSpace);
free (a2.extraSpace);
free ...
free ...
free ...
Or can it just add complexity without significant performance gains?
Thanks guys!
source
share