AGB  ·  Datenschutz  ·  Impressum  







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

Suche effizienter machen

Ein Thema von Zioone · begonnen am 19. Sep 2008 · letzter Beitrag vom 23. Sep 2008
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von jfheins
jfheins

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

Re: Suche effizienter machen

  Alt 19. Sep 2008, 15:00
Zitat von nahpets:
Die Uhr kannst Du Dir mit Delphi "selber bauen".

Vorher:ShowMessage(DateTimeToStr(Now)); Uhrzeit aufschreiben
Nachher:ShowMessage(DateTimeToStr(Now)); Uhrzeit aufschreiben und Zeitdifferenz ausrechnen.

Stephan
Diese Methode eigent sich besonders gut - allerdings weniger um die Zeit des Verfahrens zu messen, als vielmehr die Schreibgeschwindigkeit

(Während des showmessages() ist das Programm angehalten. Du stoppst also die Zeit, die du zum schreiben brauchst + Zeit der Funktion)

Besser ist es natürlich, die Zeit in einer Variablen zu speichern und nachher die different zu nehemen. Siehe hierzu auch GetTickCount - das ist dann direkt in Millisekunden
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#12

Re: Suche effizienter machen

  Alt 19. Sep 2008, 15:19
Hallo jfheins,

Du hast natürlich recht, wenn es Dir um sehr präzise Zeitmessungen geht, aber wenn ich eine Schleife über ein paar tausend Zeilen mache und feststelle, dass dauert 10 Minuten und beim nächsten Mal, nachdem ich das Programm geändert habe, dauert es fünf Minuten, dann reicht meine "manuelle" Stopuhr, gehe hier in dem Beispiel nicht davon aus, dass wir hier irgendwas hochperformantes bauen wollen. Klar könnte man vor der Schleife die Zeit oder Tickcount auf ein Label schreiben, nachher auf ein Anderes und auf ein Drittes die Differenz.

Wollte mit komplizierten Beispielen neben dem eigentlichen Problem nicht noch 'nen "Fragenkatalog" aufmachen.

Stephan
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

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

Re: Suche effizienter machen

  Alt 19. Sep 2008, 15:35
Wörter sucht man am schnellsten mit einem Dawg oder einer Hashmap ('TStringDictionary'). Such mal hier danach...
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Suche effizienter machen

  Alt 19. Sep 2008, 15:44
Zitat von nahpets:
Hwenn ich eine Schleife über ein paar tausend Zeilen mache und feststelle, dass dauert 10 Minuten und beim nächsten Mal, nachdem ich das Programm geändert habe, dauert es fünf Minuten, dann reicht meine "manuelle" Stopuhr
Das mag sein - aber wenn das hervorheben vön Wörtern in einem Textfeld länger dauert als eine Sekunde, dann läuft da irgendetwas gehörig schief

@Topic:

Hast du mal versucht, den Code zwischen BeginUpdate() und EndUpdate() zu platzieren?
Das könnte auch noch einmal schneller sein
  Mit Zitat antworten Zitat
Zioone

Registriert seit: 3. Sep 2008
49 Beiträge
 
Delphi 7 Professional
 
#15

Re: Suche effizienter machen

  Alt 21. Sep 2008, 21:37
Hi,
und sorry das ich mich jetzt erst wieder melde^^.

Da ich Anfänger bin hab ich leider kein Plan was BeginUpdate() und EndUpdate(). Wo kann ich da Code plazieren oder wie funktioniert das? Aus Internetsuche bin ich da leider auch nicht sonderlich schlau geworden.

ebenso wenig aus TStringDictionary. So ganz schlau bin ich da auch nicht draus geworden. Wäre schön wenn da jemand mir noch mal helfen könnte^^
Christine
  Mit Zitat antworten Zitat
Zioone

Registriert seit: 3. Sep 2008
49 Beiträge
 
Delphi 7 Professional
 
#16

Re: Suche effizienter machen

  Alt 23. Sep 2008, 09:49
ok, noch mal anderes gefragt
hab noch mal gesucht und bissel was gefunden, wegen dem beginupdate und endupdate.
das ganze bringt jetzt, wenn überhaupt eine sekunde gewinn. Hab ich das an der falschen stelle oder falsch verstanden?
Delphi-Quellcode:
 b := (text<>'') OR (text2<>'') OR (text3<>'');

    if b=true then
    begin
      text:=LowerCase(text);
      text2:=LowerCase(text2);
      text3:=LowerCase(text3);

      mmoLines.Lines.BeginUpdate;
      for ii := 0 to FSelect.Count-1 do
      begin
        if FSelect.Strings[ii] <>'then
        begin
          i := Pos( text, LowerCase(FSelect.Strings[ii]) );
          if i > 0 then
          begin
            mmoLines.SelStart := i+i2-1;
            mmoLines.SelLength := Length(text);
            mmoLines.SelAttributes.Color := c;
            mmoLInes.SelAttributes.Style := [fsBold];
            mmoLines.SelLength := 0;
          end;
          i := Pos( text2, LowerCase(FSelect.Strings[ii]) );
          if i > 0 then
          begin
            mmoLines.SelStart := i+i2-1;
            mmoLines.SelLength := Length(text2);
            mmoLines.SelAttributes.Color := c2;
            mmoLInes.SelAttributes.Style := [fsBold];
            mmoLines.SelLength := 0;
          end;
          i := Pos( text3, LowerCase(FSelect.Strings[ii]) );
          if i > 0 then
          begin
            mmoLines.SelStart := i+i2-1;
            mmoLines.SelLength := Length(text3);
            mmoLines.SelAttributes.Color := c3;
            mmoLInes.SelAttributes.Style := [fsBold];
            mmoLines.SelLength := 0;
          end;
        end;
        i2 := i2+Length(FSelect.Strings[ii])+2;
      end;
      mmoLines.Lines.EndUpdate;
    end;
Christine
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#17

Re: Suche effizienter machen

  Alt 23. Sep 2008, 10:00
Was ich immer noch nicht verstehe:
Warum ziehst du das mehrfache LowerCase(FSelect.Strings[ii]) nicht vor die Schleife?
Und das "if b=true then.." sollte man auch nicht tun (vorher wars besser)
Ralph
  Mit Zitat antworten Zitat
Zioone

Registriert seit: 3. Sep 2008
49 Beiträge
 
Delphi 7 Professional
 
#18

Re: Suche effizienter machen

  Alt 23. Sep 2008, 10:04
hi,
1. weil es eh kein gewinn gebracht hat an Zeit
2. wenn ich es einmal davor mache, hat er meinen Text komplett klein gemacht (logisch) nur wenn ich dann was gesucht habe, war der Text auch komplett klein, was mir nichts bringt. Und dann bringt mir mein "groß/kleinschreibung beachten - button" nichts mehr *gg*
aber wie gesagt es hat, bei einer ungefähr 500kb großen datei mit ca. 6800 Zeilen, eh nichts gebracht.

und wieso war das b=true vorher besser?
Christine
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#19

Re: Suche effizienter machen

  Alt 23. Sep 2008, 10:08
Für die Geschwindigkeitmessung würde ich folgendermassen vorgehen.

Delphi-Quellcode:
var LBegin,
    LEnd: integer;

    LTime: String;
begin
  LBegin := GetTickCount();
  try
    HierMacheIchDieArbeit();
  finally
    LEnd := GetTickCount;
    
    EinLabel.Caption := IntToStr(LEnd - LBegin);
    
  end;
end;
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
Zioone

Registriert seit: 3. Sep 2008
49 Beiträge
 
Delphi 7 Professional
 
#20

Re: Suche effizienter machen

  Alt 23. Sep 2008, 10:22
sind das millisekunden?

also auf alle Fälle mal alles durchprobiert:
30282 mit beginupdate/endupdate ohne extra schleife für Lowercase
30578 ohne beginupdate/endupdate ohne extra schleife für Lowercase
30219 mit beginupdate/endupdate mit extra schleife für Lowercase
30906 ohne beginupdate/endupdate mit extra schleife für Lowercase
Christine
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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:16 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