AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi kleine Lücken im Heap optimal verwenden?
Thema durchsuchen
Ansicht
Themen-Optionen

kleine Lücken im Heap optimal verwenden?

Ein Thema von BrightAngel · begonnen am 16. Feb 2010 · letzter Beitrag vom 16. Feb 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#11

Re: kleine Lücken im Heap optimal verwenden?

  Alt 16. Feb 2010, 12:47
Du kannst dieses und andere nette Dinge sogar in Delphi nachrüsten
> DelphiSpeedUp > http://www.delphipraxis.net/internal...ct.php?t=80522

Dieses betrifft dann aber nur Delphi und ändert keines der damit erstellten Programme.

Eigentlich dachte ich, daß es diese Verbesserungen auch für's Programm gab.

Das VCL-Fix-Pack enthält ja nur Fehlerbehebungen: http://www.delphipraxis.net/internal...=966823#966823
Bzw. ab wann hatte Borland eigentlich das FastCodeProjekt übernommen und integriert?
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von Jaynder
Jaynder

Registriert seit: 2. Dez 2004
Ort: Süderelbe
134 Beiträge
 
Delphi 10.4 Sydney
 
#12

Re: kleine Lücken im Heap optimal verwenden?

  Alt 16. Feb 2010, 13:57
Zitat von BrightAngel:
-Speicherblock (größe: n*sizeof(TRecordX)) wird angefordert
-TList mit n Pointern auf jeweils ein TRecordX <--die ist mein problem+
-Jetzt KANN es passieren, dass wieder ein Speicherblock wie oben angefordert wird.
-Die Liste "frisst". Nach ein Paar Zyklen ist sie zu groß für den Speicherbereich Folge: sie wird verschoben.
Dieser Bereich ist aber gerade zu Anfangs so klein, dass die zu anfordernten Speicherblöcke zu groß sind, um in die von TList freigewordenen Plätze reinzupassen. Ich habe schon mit dem Gedanken gespielt, ein gleichgroßer Speicherblock standartmäßig für diese Tlist zu verwenden, sodass er später anders verwendet werden kann, aber ist das das Gelbe vom Ei?
[EDIT1]Bzw. Wenn FastMM immer nährungsweise größere Blöcke anfordert, dann ist meine Methode ja auch Kontraproduktiv, weil bei jedem, immer fix bleibendem Block reste entstehen???[/EDIT1]

Würde es mir was bringen, wenn ich einen eigenen Heap extra dafür erschaffen würde??? also via createHeap etc?
Brighty
Auch da mache dir nicht so viele Gedanken. Denn erstens vergrößert sich TList beim Add "intelligent" mit der Methode Grow
Delphi-Quellcode:
procedure TList.Grow;
var
  Delta: Integer;
begin
  if FCapacity > 64 then
    Delta := FCapacity div 4
  else
    if FCapacity > 8 then
      Delta := 16
    else
      Delta := 4;
  SetCapacity(FCapacity + Delta);
end;
und zweitens: wenn du evtl. vorher weißt, dass die Liste sehr groß wird, kannst du sie mit Liste.Capacity := 999999 von vornherein auf einen großen Wert setzen und hinterher evtl. mit Liste.Capacity := Liste.Count wieder reduzieren
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.048 Beiträge
 
Delphi 12 Athens
 
#13

Re: kleine Lücken im Heap optimal verwenden?

  Alt 16. Feb 2010, 14:10
Zitat von Jaynder:
Auch da mache dir nicht so viele Gedanken. Denn erstens vergrößert sich TList beim Add "intelligent" mit der Methode Grow[delphi]
Dieses laß ich inzwischen oftmals, da FastMM sowas auch schon macht, welches dann TList indirekt ausnutzen würde.

Sowas wie "und zweitens" würde da schon mehr bringen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr.
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