AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi FOR oder WIHLE was ist schneller (Stringgrid befüllen)
Thema durchsuchen
Ansicht
Themen-Optionen

FOR oder WIHLE was ist schneller (Stringgrid befüllen)

Ein Thema von Stef_One · begonnen am 15. Feb 2009 · letzter Beitrag vom 19. Feb 2009
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#11

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 15. Feb 2009, 15:18
Hi,

also wenn Du schon beim Optimieren bist:

Delphi-Quellcode:
   if pos('F',SchichtList.Strings[x])>0 then result:='F';//'Frühschicht';
   if pos('S',SchichtList.Strings[x])>0 then result:='S';//'Spätschicht';
   if pos('N',SchichtList.Strings[x])>0 then result:='N';//'Nachtschicht';
   if pos('W',SchichtList.Strings[x])>0 then result:='.';//'Wochenende';
Hier wird 4 x ein String aus der Liste geholt um einen Vergleich durchzuführen.
Wenn aber einer der Vergleiche ok geht, wird auch noch weiter verglichen.

Also besser
Delphi-Quellcode:
  schList := SchichtList.Strings[x];
  if pos('F',schList)>0 then
    result:='F'   //'Frühschicht'
  else if pos('S',schList)>0 then
    result:='S'  //'Spätschicht'
  else if pos('N',schList)>0 then
    result:='N'   //'Nachtschicht'
  else if pos('W',SchichtList.Strings[x])>0 then
    result:='.'; //'Wochenende'
Wenn es gewünscht ist, dass z.B Wochenende den Vorrang hat (theoretisch könnten ja alle Buchstaben in schList auftauchen,
dann musst du einfach die Reihnenfolge der Prüfungen entsprechend dem Vorrang tauschen.

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 15. Feb 2009, 15:22
Und was ist eigentlich, wenn mal weder F, S, N oder W in SchichtList.Strings[x] vorkommt?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#13

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 15. Feb 2009, 16:10
Tja, was ich hier lese riecht für mich eher nach einer klassischen Datenbank-Aufgabe, statt das ganze im Memory abzuarbeiten.
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#14

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 15. Feb 2009, 16:26
Hallo Stef_One,

Daten : Array [1..100000] of TChangeData; mit dieser Zeile wird natürlich sehr viel Speicher belegt und das kann dann dazu führen das Windows anfängt den Speicher auf der Festplatte auszulagern.
Ich würde diesen Wert mal auf 1.000 setzen um zu sehen, ob die Geschwindigkeit der Schleife zunimmt, oder besser einen dynamischen Array dafür verwenden, um nur so viel Speicher zu Verbrauchen wie er auch benötigt wird.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 15. Feb 2009, 16:36
Wenn schon per array dann einen dynamischen. Besser aber eine Liste oder eine Datenbank-Lösung
Markus Kinzler
  Mit Zitat antworten Zitat
HaJo

Registriert seit: 28. Apr 2004
Ort: Würselen
140 Beiträge
 
Delphi 8 Enterprise
 
#16

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 15. Feb 2009, 17:01
@mkinzler, Danke für den Hinweis zur Datenbank-Lösung!

Gerade das hier spricht dafür:
Zitat:
im Testmodus sind 45 Mitarbeiter eingepflegt
Wieviele werden es wohl am Ende sein??
Ich stelle es mir schrecklich vor, Mitarbeiterdaten im Quelltext einzupflegen
Hans-Joachim Brosius
  Mit Zitat antworten Zitat
Stef_One

Registriert seit: 5. Sep 2007
18 Beiträge
 
#17

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 19. Feb 2009, 17:56
@mkinzler
Zitat:
Gerade das hier spricht dafür:
Zitat:
im Testmodus sind 45 Mitarbeiter eingepflegt

Wieviele werden es wohl am Ende sein??
Ich stelle es mir schrecklich vor, Mitarbeiterdaten im Quelltext einzupflegen Smile
also das ganze ist so aufgebaut das man die Mitarbeiter über ein Excelfile importieren kann! Wenns hoch kommt könnte das auf ganze ca.600 ansteigen!



Zitat:
mit dieser Zeile wird natürlich sehr viel Speicher belegt und das kann dann dazu führen das Windows anfängt den Speicher auf der Festplatte auszulagern.
Ich würde diesen Wert mal auf 1.000 setzen um zu sehen, ob die Geschwindigkeit der Schleife zunimmt, oder besser einen dynamischen Array dafür verwenden, um nur so viel Speicher zu Verbrauchen wie er auch benötigt wird.
@chemiker
mit diesen Datensätzen übersteuere ich die berechneten Schichten (z.b mit Urlaub/Krank/Schichten die nicht der normalen Reihenfolge entsprechen) für eine 4-5 Wochenplanung komme ich jetzt bei 45 Mitarbeitern schon auf ca. 900 einträge! Dieses Array zuverkleinern würde mir nichts bringen.

Daten : Array [1..100000] of TChangeData;
@himitsu
Zitat:
Und was ist eigentlich, wenn mal weder F, S, N oder W in SchichtList.Strings[x] vorkommt?
SchichtList gibt nur die normale Reihenfolge wieder, sollte es die Schicht von diesem System abweichen wird sie durch TChangeData
übersteuert.
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#18

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 19. Feb 2009, 18:07
Bei 600 Personen wären das 12.000 Records?! Hoffentlich suchst du dadrin nie einen bestimmten, das würde ja ewig dauern. Dazu dann noch die normale Schichtplanung.

Also da würd ich immer über ne Datenbank gehen. Wie speicherst du die Daten denn momentan eigentlich?
  Mit Zitat antworten Zitat
Benutzerbild von Chemiker
Chemiker

Registriert seit: 14. Aug 2005
1.858 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 19. Feb 2009, 18:58
Hallo Stef_one,

Zitat von Stef_one:
mit diesen Datensätzen übersteuere ich die berechneten Schichten (z.b mit Urlaub/Krank/Schichten die nicht der normalen Reihenfolge entsprechen) für eine 4-5 Wochenplanung komme ich jetzt bei 45 Mitarbeitern schon auf ca. 900 einträge! Dieses Array zuverkleinern würde mir nichts bringen.
Das kann schon sein, aber ich wollte damit nur schreiben, dass man mit einer Verbesserung der Schleife in Bezug auf Geschwindigkeit das Grundlegende Problem nicht erfasst.

Um das ganze zu vereinfachen, eine Optimierung der Schleife bringt nichts, weil Dein Ansatz grundlegend Falsch ist.

Das Mittel der Wahl ist eine Datenbank.

Bis bald Chemiker
wer gesund ist hat 1000 wünsche wer krank ist nur einen.
  Mit Zitat antworten Zitat
Stef_One

Registriert seit: 5. Sep 2007
18 Beiträge
 
#20

Re: FOR oder WIHLE was ist schneller (Stringgrid befüllen)

  Alt 19. Feb 2009, 19:28
@mquadrat

momentan speicher ich das so:


Delphi-Quellcode:
procedure SaveMitarbeiter;//SaveFileRec;
var
  F: File of TMitarbeiter;
begin
  try
    AssignFile(F,extractfilepath(application.exename)+'\data\Mitarbeiter.dat');
    ReWrite(F);
    Write(F,Mitarbeiter);
  finally
    CloseFile(F);
  end;
end;

@Chemiker
Hmm ja Dantenbank damit habe ich mich noch nicht beschäftig, allerdings hatte ich schon nachgedacht über access zu gehn,
würd aber gern bei delphi bleiben, gibs dahin gehend eine Komponente die du mir empfehlen kannst?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 05:25 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