AGB  ·  Datenschutz  ·  Impressum  







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

Optimierung des Codes

Offene Frage von "Svenkan"
Ein Thema von Svenkan · begonnen am 15. Jul 2007 · letzter Beitrag vom 15. Jul 2007
Antwort Antwort
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#1

Optimierung des Codes

  Alt 15. Jul 2007, 10:41
Hey Leute!
Folgendes: in meiner ganzen Zeit hier habe ich einiges von euch gelernt, wofür ich euch auch sehr danke!
Nun stehe ich aber vor einem Problem, dass sich nennt: Performance!
Ich war immer so toll und habe für alles was ich mehrfache brauchte, einfach immer alles dupliziert (bspw. Timer). Was nun so einiges an bestimmt überflüssigen Code hergibt.
Da ich für 5 Tage meine Pläne jeweils ausgebe, habe ich dafür auch 5 versch. Timer, die alle 10sec die HTML-Pläne erstellen.
Dann wäre da noch ein Timer zum Aktualisieren der Daten (jede Sekunde) und 2 für den Upload nach x Min (Lehrer- und Schülerpläne getrennt; jeweils einzeln deaktivierbar im Programm).
Insg. komme ich auf eine Größe der Exe von 1.36MB, wo ich hier im Forum auch schon drüber lesen konnte, dass selbst 1MB schon ziemlich groß sein soll.
Das hat mich jetzt zum Nachdenken gebracht und wollte von euch wissen, wie man effektiv optimieren kann und welche Möglichkeiten sich mir da bieten.
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#2

Re: Optimierung des Codes

  Alt 15. Jul 2007, 10:49
Zitat von Svenkan:
Insg. komme ich auf eine Größe der Exe von 1.36MB, wo ich hier im Forum auch schon drüber lesen konnte, dass selbst 1MB schon ziemlich groß sein soll.
Also wir liefern .exen mit 9 - 12 MB aus. In der Firma wo ich vorher war, hatte die Exe ganze 22 MB. Also stör Dich da mal nicht dran, sofern Du das Programm nicht unbedingt mit möglichst keinen Downloads vertreiben willst.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#3

Re: Optimierung des Codes

  Alt 15. Jul 2007, 10:53
Zitat von Svenkan:
Hey Leute!
Nun stehe ich aber vor einem Problem, dass sich nennt: Performance!
Inwiefern besteht ein Performanceproblem? Ein großes Programm muss ja nicht heißen, dass es langsam ist.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Optimierung des Codes

  Alt 15. Jul 2007, 10:58
@ Phoenix: Ah, von dir war das also die Diskussion über die 22MB-MB exe.
Genau deswegen kam ich auf diese Optimierungsgeschichte.
Naja ok.
Aber es geht dann auch noch im die Programm-Performance, da mein Programm doch des Häufigeren mal ins Stocken gerät, wenn irgendwie 5 Timer gleichzeitig insg. 13 Dateien schreiben und währenddessen alle 5 Sekunden die Daten aus der dbf geholt werden sollen.
Besonders für die Planerstellung such ich noch eine bessere Alternative, um nicht immer 5 Timer gleichzeitig laufen zu lassen und den Code zu dezimieren (evtl Templates?).
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#5

Re: Optimierung des Codes

  Alt 15. Jul 2007, 11:02
Mit Stocken meinst Du wohl, dass das Programm nicht mehr so flüssig reagiert wie es sollte?

Da würde ich dann eher vorschlagen, die Ein- und Ausgaberoutinen mit den Dateizugriffen in Threads auszulagern, so dass diese den Haupthread mit der Oberfläche nicht mehr blockieren können.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Svenkan

Registriert seit: 10. Feb 2007
Ort: Bersenbrück
547 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Optimierung des Codes

  Alt 15. Jul 2007, 11:05
Zitat von Phoenix:
Mit Stocken meinst Du wohl, dass das Programm nicht mehr so flüssig reagiert wie es sollte?
Genau!

Zitat von Phoenix:
Da würde ich dann eher vorschlagen, die Ein- und Ausgaberoutinen mit den Dateizugriffen in Threads auszulagern, so dass diese den Haupthread mit der Oberfläche nicht mehr blockieren können.
Zum Auslesen: da habe ich gerade etwas seeeehr Überflüssiges gefunden, was noch aus 'alten Tagen' drin war. Habs entfernt und schonma 0.1MB gespart.
Aber trotzdem hört sich das mit den Threads natürlich sehr interessant an.
Hast du da irgendwie ein Tutorial o.Ä. was du mir empfehlen könntest?
Sven Kannenberg
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#7

Re: Optimierung des Codes

  Alt 15. Jul 2007, 11:07
Such mal auf Luckie seiner Homepage, da hat er ein paar sehr gute Tutorials.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Optimierung des Codes

  Alt 15. Jul 2007, 11:07
Die Frage, die du dir stelen solltest ist, ob du wirklich (soviele) Timer benötigst

Falls es eine Möglichkeit gibt, festzustellen wann eine Aufgabe erledigt werden muss, ist das in fast jedem Fall einer Polling-basierten Lösung vourzuziehen ...

Zum Beispiel: Warum musst du alle 10 sek. einen neuen HTML-Plan erstellen? Warum kannst du den nicht nur neu erstellen, wenn er geändert wurde?

Timer werden häufig in Zusammenhang mit dem sog. Polling eingesetzt, und Polling ist für fast kein Problem die beste Lösung ...

Das Gegenteil/bessere wäre eine Ereignisbasierte Lösung, wie ich sie oben beschrieben habe, so macht Windows auch vieles: Ein Fesnter wird nur neugezeichnet, wenn ein Ereignis eintritt, das das erfordert, die Nachrichtenschleife wird nur angestoßen, wenn eine Message da ist (in den meisten Programmen) usw.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#9

Re: Optimierung des Codes

  Alt 15. Jul 2007, 12:44
Hi,

auch das Schreiben von 13 Dateien gleichzeitig klingt nicht ganz optimal. So eine Festplatte (denke mal auf die wird geschrieben) arbeitet am Effektivsten, wenn sie große Datenmengen schreibt/liest. Du hast immer eine gewisse Zeit, die vergeht um eine Datei zu suchen (Position ermitteln, Köpfe in Pos. fahren, warten bis Datum unter Kopf). Wurde die Datei erstmal gefunden, kannst Du sehr sehr große Datenmengen ziemlich flink Schreiben. Dank Cache und verschiedenen Optimierungen fällt hier selbst bei kleinen Mengen die Zugriffszeit noch recht gering aus. Wirklich gleichzeitig kannst Du aber keine 13 Dateien schreiben (außer Du hast 13 Festplatten, am besten mit 13 Bussen..). Jedenfalls heißt in dem Fall gleichzeitig schreiben, dass immer abwechselnd ein Stück in jede Datei geschrieben wird. Das Problem ist dabei dann der Wechsel zwischen den Dateien, der kostet unnötig Zeit.
Besser ist es, wenn Du hier einfach eine Datei nach der anderen schreibst. Noch besser, Du verwendest sogar noch einen kleinen Schreibpuffer, sammelst also im Hauptspeicher erstmal bestimmte Mengen von Daten, die Du in eine Datei schreiben willst und schreibst erst dann, wenn eine bestimmte Menge erreicht ist. Wie gut das jeweils möglich ist, hängt natürlich vom Programm ab.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Optimierung des Codes

  Alt 15. Jul 2007, 12:58
I.A. reicht ein einziger "Timer", also eine Instanz, die zeitgesteuert irgendwelche Aufgaben erledigt. Ich würde einen Thread verwenden, der ein Liste von Jobs abarbeitet. Jeder Job wird zu einem bestimmten Zeitpunkt ausgeführt. So reicht es, wenn der Thread 1x pro Sekunde (z.B.) nachschaut, ob der nächste auszuführende Job 'schon dran' ist.

Ein periodisch auftretender Job kann 'sich selbst' dann -nachdem er abgearbeitet ist- selbst wieder in die Jobliste des Threads einfügen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  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 06:37 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