Na ein Schwimmingpool ;D
Es ist natürlich ein Memory-Pool. Ist nichts geheimnissvolles dran. Man allokiert irgendwo Speicher und kann dann immer Daten hineinwerfen. In deinem Fall ist es sehr vorteilhaft, weil sich dadurch die Allokation/Deallokation veringern.
Ohne Pool:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
|
void Send(int type, void* data, int size)
{
char* temp = new char[size + sizeof(int)];
// Daten senden
....
delete[] temp;
}
|
Mit Pool:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
void Send(int type, void* data, int size)
{
// Pool größe prüfen
if(m_iPoolSize < (size + sizeof(int))
{
// Pool vergrößern
ResizePool(size + sizeof(int));
}
// Daten senden
.....
}
|
Man sieht schnell, das sich die Operationen veringern. Nur wenn der Pool zu klein ist, hat man ein paar Operationen mehr. Aber das ist nur in den ersten 1 2 sec des Programmes. Danach hat sich der Pool soweit vergrößert das man alle Daten hineinpacken kann.