AGB  ·  Datenschutz  ·  Impressum  







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

Schach - Fehlerbeseitigung

Ein Thema von Danny92 · begonnen am 21. Mär 2019 · letzter Beitrag vom 25. Mär 2019
Antwort Antwort
hanvas

Registriert seit: 28. Okt 2010
177 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Schach - Fehlerbeseitigung

  Alt 23. Mär 2019, 19:26
Wie macht man denn zum Beispiel den Code effizient? Ich könnte u. a. ausschließlich Referenzparameter in den Methoden übergeben, um zeit-intensives Kopieren der Variablen zu sparen.
Das bringt bei bestimmten Datentypen (zb. Arrays und Pascal - Strings) mehr Effizienz, aber nicht var sondern const verwenden.

Zitat:
Außerdem verwende ich mit Mergesort schon einen Sortieralgorithmus mit bester asymptotischer Laufzeit.
Ein besserer/effizienter/schnellerer Algorithmus, sofern es einen gibt ist sicher die beste Lösung. Dein Sortierverfahren ist ja nur ein Teil des Algos.

Falls es keinen besseren Algorithmus gibt fängt man an zu optimieren. Dabei würde ich Dir zunächst einen Profiler empfehlen um zu sehen wo es eigentlich hakt.

Oft fressen ein paar "kleine" Codeteile den größten Teil der Zeit.

Makros - also mit Inline deklarierte Methoden - sind für kurze Methoden oft eine gute Möglichkeit den Overhead der durch den Aufruf einer Methode erzeugt wird zu minimieren. Das macht aber nur Sinn wenn die Methode relativ klein ist und sehr häufig aufgerufen wird. Je öfter eine Methode / Prozedur / Funktion aufgerufen wird umso größer ist der Gewinn.

Man kann Laufzeit durch Speicher ersetzen.

Also soviel wie möglich im voraus berechnen. Nachschlage und Sprungtabellen erstellen usw.

Insbesondere dann wenn sich die Berechnungen in einer Schleife, oder im inneren von inneren von inneren (usw) Schleifen befinden. Jede Ebene die man Berechnungen nach oben bringt spart Rechenzeit. Dabei darf man, wenn es um Optimierung geht, auch nicht unbedingt Angst vor globalen Variablen haben.

Of werden am Anfang und Ende von Schleifen Initialisierungsarbeiten durchgeführt, also Speicher allokiert und freigegeben, Werte berechnet und Variablen initialisiert. Manchmal sind solche Initialisierungen ganz oder teilweise nur ein mal notwendig, werden aber dennoch jedesmal durchgeführt, manchmal kann man Variablen in Tabellen aufnehmen und auf diese zugreifen anstatt diese jedesmal in einer Schleife erneut zu berechnen. Im Zweifelsfall führt man einmal eine Schleife mit den Initialisierungsarbeiten (und gleichen Indexen) aus, und ein zweitesmal eine Art "Arbeitsschleife"

Wichtig ist, alles was man macht ausgiebig zu dokumentieren. Optimierter Code wird schnell unleserlich, weil man Stil zu Gunsten von Geschwindigkeit aufgibt. Diesen Nachteil sollte man durch ausgiebiges Dokumentieren ausgleichen. Variablennamen zu kürzen macht bei einer Compilersprache aber keinen Sinn.

Eine weitere Möglichkeit ist die parallele Verarbeitung. Wenn Du das vor hast, solltest Du deinen Code aber paralellisieren bevor Du dich daran machst ihn wie oben beschrieben zu optimieren. Bei paralellisierten Code ist Lesbarkeit zunächst oberstes Gebot.

hth

Ha-Joe
  Mit Zitat antworten Zitat
Benutzerbild von Danny92
Danny92

Registriert seit: 18. Aug 2014
55 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

AW: Schach - Fehlerbeseitigung

  Alt 25. Mär 2019, 07:33
Gibt es denn einen Profiler für Lazarus? Soweit ich was gefunden habe gibt es welche nur für Delphi.


Auf jeden Fall spielt er jetzt so gut wie einwandfrei. Alles sollte jetzt funktionieren! Nur an der Performance muss ich noch ein wenig arbeiten!

https://www.file-upload.net/download...chach.zip.html

Hier der Downloadlink zur zip, welcher wegen der enthaltenen project.exe größer war als 5 MB.
  Mit Zitat antworten Zitat
hanvas

Registriert seit: 28. Okt 2010
177 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Schach - Fehlerbeseitigung

  Alt 25. Mär 2019, 07:55
Gibt es denn einen Profiler für Lazarus? Soweit ich was gefunden habe gibt es welche nur für Delphi.
http://wiki.lazarus.freepascal.org/Profiling

http://wiki.freepascal.org/LazProfiler
http://wiki.lazarus.freepascal.org/FPProfiler
http://www.prodelphi.de/detailLinux.html

hth Ha-Joe
  Mit Zitat antworten Zitat
Monday

Registriert seit: 24. Aug 2012
103 Beiträge
 
FreePascal / Lazarus
 
#4

AW: Schach - Fehlerbeseitigung

  Alt 25. Mär 2019, 08:32
Großartig Danny, Glückwunsch!
  Mit Zitat antworten Zitat
Elspass

Registriert seit: 15. Sep 2003
Ort: Hofheim am Taunus
83 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Schach - Fehlerbeseitigung

  Alt 25. Mär 2019, 11:10
Unter www.lazarusforum.de bekommst Du bestimmt mehr Hilfe.

Gruß Jörg
Jörg Elspass
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#6

AW: Schach - Fehlerbeseitigung

  Alt 25. Mär 2019, 12:51
Zitat:
Hier der Downloadlink zur zip, welcher wegen der enthaltenen project.exe größer war als 5 MB
Nächstes mal einfach mit der Release-Konfiguration kompilieren statt Debug
  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 09:31 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