AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Suchschleife auf 2 Threads / CPUs aufteilen (OpenMP?)
Thema durchsuchen
Ansicht
Themen-Optionen

Suchschleife auf 2 Threads / CPUs aufteilen (OpenMP?)

Ein Thema von Der_Ventilator · begonnen am 6. Apr 2007 · letzter Beitrag vom 11. Apr 2007
 
Benutzerbild von himitsu
himitsu

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

Re: Suchschleife auf 2 Threads / CPUs aufteilen (OpenMP?)

  Alt 11. Apr 2007, 06:48
Die ganzen ansilowercase würde ich mal irgendwie rausnehmen.

Am einfachsten wäre es wohl auch, da Stringoperationen mit zu den Langsamsten gehören und und dazu noch für jedes ansilowercase bei jedem Aufruf der IF-Abfrage eine tempräre Stringvariable angelegt wird (speicher resservieren/freigeben), wo dann der kleingeschriebene Text drinsteht.

Wenn du häufig suchst, wäre es da wohl einfacher, wenn du noch ein zweites Array mit den kleingeschriebenen Texten erstellst, oder auch gleich die Mleingeschriebenen mit in dieses Array aufnimmst.

Das ergibt dann zwar die doppelte Datenmänge, aber erspart das ständige Umgewandle.

z.B. so:
du müßtest dann nur jedesmal wenn was in einem Eintrag geändert wurde ein Update dieses Eintrags vornehmen.
Und dann einfach nur in der Suche die
Delphi-Quellcode:
type TID3Tag = record
    Titel : string;
    Artist : string;
    Album : string;
    Year : string;
    Comment : string;
    Genre : string;
    Track : integer;
  end;

  TMp3Eintrag = record
      Filename : string;
      Path : string;
      Anzeige : boolean;
      Id3tag : Tid3tag;
      lowercase: record
        Filename : string;
        Path : string;
        Id3tag : Tid3tag;
      end;
  end;

procedure updade(ListenNummer, ArrayIndex: integer);
  begin
    Mp3Daten[ListenNummer, ArrayIndex].lowercase.Filename :=
      ansilowercase(Mp3Daten[ListenNummer, ArrayIndex].Filename);
    Mp3Daten[ListenNummer, ArrayIndex].lowercase.Path :=
      ansilowercase(Mp3Daten[ListenNummer, ArrayIndex].Path);
    Mp3Daten[ListenNummer, ArrayIndex].lowercase.Id3tag.Titel :=
      ansilowercase(Mp3Daten[ListenNummer, ArrayIndex].Id3tag.Titel);
    ...
    Mp3Daten[ListenNummer, ArrayIndex].lowercase.Id3tag.Genre :=
      ansilowercase(Mp3Daten[ListenNummer, ArrayIndex].Id3tag.Genre);
  end;


  if pos(CurrentSearch, Mp3Daten[ListenNummer,ArrayIndex].lowercase.Filename)
    or pos(CurrentSearch, Mp3Daten[ListenNummer,ArrayIndex].lowercase.Path)
    or pos(CurrentSearch, Mp3Daten[ListenNummer,ArrayIndex].lowercase.id3tag.Titel)
    ...
    or pos(CurrentSearch, Mp3Daten[ListenNummer,ArrayIndex].lowercase.id3tag.Genre)
    <> 0;
So würden die lowercase-Strings ja nur einmal erstellt (wenn du sie für mehrere Suchanfagen verwendest ... bei 'ner einmaligen Suchaktion wären die sogar hinderlich und speicherfressend, da ja beim Auffinden des Suchstrings die nachfolgenden Vergleiche der aktuellen IF-Abfrage entfallen) und dann jedesmal nur in den bereits Existierenden nur noch gesucht und eben nicht jedesmal ein neuer lowercase-String erstellt.

Wenn die lowercase-Strings längere Zeit nicht benötigt werden, kannst du sie ja zwegs Speicherschonung freigeben und dann vor der nächsten Suche wieder erstellen.



ach ja: (bringtzwar nicht viel, aber macht es womöglich etwas übersichtlicher)
Delphi-Quellcode:
if ... then match := true else false;

// entspricht

match := ...;
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


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 23:42 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