AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi-Programme optimieren

Offene Frage von "Z4ppy"
Ein Thema von Z4ppy · begonnen am 8. Mär 2009 · letzter Beitrag vom 8. Mär 2009
Antwort Antwort
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#1

Re: Delphi-Programme optimieren

  Alt 8. Mär 2009, 14:21
Also ich habe die Erafhrung gemacht, dass man weniger Speicher meistens mit mehr Rechenaufwand bezahlt, und wenig Rechenaufwand mit viel Speicher. Es gilt einen Kompromiss zu finden. Z.B. habe ich mal einen Leveleditor für ein Spiel (nicht von mir) geschrieben. Bei manchen Levels sind sehr, sehr viele Objekte zu zeichnen. Deshalb zeichne ich nur neu, wenn sich etwas ändert, dann lege ich diesen Layer in einem Bitmap im Speicher ab. Das resultiert zwar in einem höheren Speicherverbrauch (Bitmaps sind absolute Speicherfresser), aber lässt eine annehmbare Geschwindigkeit zu.

Was die Geschwindigkeitsoptimierung angeht: Pauschal kann man sagen, je weniger Anweisungen, desto höhere Geschwindigkeit. Dabei ist auch zu beachten, dass nicht jede Operation gleich schnell ist. Eine Multiplikation ist z.b. schneller als eine Division, manchmal lohnt es sich also, Algorithmen so umzuformen, dass man andere Operationen benutzen kann. Wenn du ein absoluter Perfromancefreak bist, kannst du bestimtme Funktionen auch in Inline-Assembler implementieren. Der damit verbundene Aufwand ist aber nur in sehr seltenen Fällen sinnvoll, wenn schon alles andere perfekt optimiert ist. Meistens bringen "gröbere" Optimierungen mehr.

Bei Parametern > 4 Byte sollte man, wenn möglich, die Direktive const verwenden. Dadurch spart man sich erstens die Rechenzeit zum Kopieren der Daten auf den Stack, spart Speicher, und beugt einem Stacküberlauf vor. Vor allem bei großen Datentypen wie beispielsweise Strings ist das sehr sinnvoll.

Wenn man Dateien von der Festplatte liest, ist es sinnvoll, die Datei in größeren Blöcken (gepuffert) einzulesen, weil die Festplatet so effizienter arbeiten kann. Man kann kleinere Dateien auch komplett in den Speicher laden (TMemorystream), was allerdings wieder auf Kosten des Arbeitsspeichers geht. Es gibt auch noch Memory Mapped Files, bei denen die Pufferung anscheinend automatisch von Windows übernommen wird, aber wei lich mich damit noch nicht befasst habe, kann ich dazu nichts sagen.

Das sind jetzt so ein paar Sachen, die mir spontan einfallen, wenn es um Optimierungen geht.
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz