Forum: Object-Pascal / Delphi-Language
Delphi
by ken_jones,
9. Jul 2009
So, ich hab den SpeedAllocator detailliert unter die Lupe genommen und folgendes herausgefunden:
Der Code des SpeedAllocators entspricht ziemlich genau diesem Code hier: Small Block Allocator
Einerseits behauptet der Author mit dem Small Block Allocator bis zu 25x schneller zu sein, andererseits (auch wenn die Aussage ziemlich Euphorisch ist) muss ich das fast glauben. Gut, vielleicht nicht...
Forum: Object-Pascal / Delphi-Language
Delphi
by ken_jones,
8. Jul 2009
Hmm, kann deinen Gedanken nicht ganz folgen. Meinst du etwas in dieser Richtung (kam mir beim lesen deines Beitrags in den Sinn)?
var
gs : TGroundStructure;
pPointer : Pointer;
begin
GetMem(pPointer, TGroundStructure.InstanceSize); // <- später dann dieser SpeedAllocator
gs := TGroundStructure.InitInstance(pPointer) as TGroundStructure;
Forum: Object-Pascal / Delphi-Language
Delphi
by ken_jones,
8. Jul 2009
Ok, vielen Dank nochmals! Hab mich jetzt ein bisschen schlau gelesen wie's in C funktioniert.
Aber ich habs noch nicht raus, wie ich dasselbe in Delphi hinkrieg.
Ob mit New, Create, class function NewInstance, etc., es gibt keinen mir bekannten Weg ein Objekt zu instantiieren ohne Speicher zu allozieren.
Hat jemand noch einen Trick auf Lager?
Forum: Object-Pascal / Delphi-Language
Delphi
by ken_jones,
7. Jul 2009
Vielen Dank erstmal euch beiden!
Hab das ganze jetzt nochmals angeschaut.
Der "SpeedAllocator" reserviert wirklich (Malloc) Speicher in der Grösse des "GroundStructure".
"New" macht dies meines Erachtens ebenfalls.
Damit ich das jetzt richtig verstehe: Es wird somit 2x Speicher reserviert, aber durch den Cast am selben Ort?
Forum: Object-Pascal / Delphi-Language
Delphi
by ken_jones,
7. Jul 2009
Ich hab ein grosses Projekt, welches ich von CPP nach Delphi portieren muss. Jetzt bin ich auf eine Stelle gestossen, bei welcher ich den Syntax von C nicht ganz begreife:
void* mem = speedallocator->Allocate(sizeof(GroundStructure));
return new (mem) GroundStructure(def);
Also, der speedallocator reserviert mir auf etwas geschicktere Art und Weise etwas Speicher und liefert mir einen...