Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi C Code in Delphi Code wandeln (https://www.delphipraxis.net/136756-c-code-delphi-code-wandeln.html)

Cyf 8. Jul 2009 22:53

Re: C Code in Delphi Code wandeln
 
Das kann wohl schneller sein und auch für einen garbage collector genutzt werden, soll hier das selbe Objekt durch ein neues ersetzt werden, so kann einfach der alte Speicherbereich (der ja immer an der selben Stelle auf dem Heap ist) mit dem neuen Objekt überschrieben werden und zudem kann vom Verwaltungsobjekt sichergestellt werden, dass der Speicher beim Beenden (oder wann auch immer) wirklich freigegeben wird. Zudem können wie schon angemerkt im Vorraus größere Speicherblöcke als nötig angefordert und dann selbst verwaltet werden. Hierbei kommt es halt darauf an, wie der SpeedAllocator implementiert ist.

Nebenbei bemerkt ist das ja eigentlich C++...

ken_jones 9. Jul 2009 07:57

Re: C Code in Delphi Code wandeln
 
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 25x, aber auf alle Fälle schneller. Denn wenn wirklich viele Objekte, und ich mein viele,erstellt werden, dann reicht ein einziger Malloc für vielleicht 1000 Objekte aus. Und mit geschicktem Handling kann ich den Speicherplatz wiederverwenden, ohne Free/Malloc.

Kurzum, ich werde den SpeedAllocator in Delphi umsetzen, ich glaub da gibt es genug Sinn dahinter.

Zitat:

Zitat von Cyf
Nebenbei bemerkt ist das ja eigentlich C++..

You're right!

Wenn ich heute dazukomme, werde ich mal mit InitInstance etwas herumspielen, ich glaub da bin ich auf dem richtigen Weg um das in Delphi umzusetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz