AGB  ·  Datenschutz  ·  Impressum  







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

Schleifen Optimierung möglich?

Ein Thema von C.Schoch · begonnen am 16. Aug 2006 · letzter Beitrag vom 17. Aug 2006
 
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
1.062 Beiträge
 
#6

Re: Schleifen Optimierung möglich?

  Alt 16. Aug 2006, 19:08
Zitat von thkerkmann:
Delphi-Quellcode:
while not Terminated and (i < Sourcelist.Count) do
 ...
Doch, da Terminate eine andere Bedeutung und einen anderen Wert haben kann als abbruch.
Was die non-break-Variante betrifft, so hat sie den "Vorteil", dass ich eine Variable und eine Bedingung mehr in der Schleife habe. Macht aber keinen grossen Unterschied, ist Geschmacksache, und OT.

Was die Schleife an sich betrifft, so ist an der schleife selbst nicht viel zu optimieren.
Ein Compiler wuerde daraus lediglich sowas basteln:
Delphi-Quellcode:
if not Terminated then
  for i := 0 to SourceList.Count - 1 do
  begin
    iFindResult := DestList.IndexOf(SourceList.Strings[i]);
    if iFindResult <> -1 then
    begin
      // Zu einer dritten Liste hinzufügen
    end
    else
      break;
  end;
und das auch nur, weil Terminated hier nicht bearbeitet wird. (Ich denke mal, Terminated wird durch ein Ereignis gesetzt, und hier fehlt lediglich ein ProcessMessages). Ein kleines bisschen wuerde sich durch ein iFindResult < 0 geben, aber einen bemerkbaren Geschwindigkeitsschub wuerde das auch nicht bringen.
Eine Optimierung ist hier - soweit ich das sehen kann - nur im Loesungsansatz moeglich. Denn nach diesem Algorithmus muessen n*m Vergleiche durchgefuehrt werden. Und bei entsprechend grossen Listen kostet dies entsprechend viel Zeit.
Eine Sortierung der Liste wuerde die Laufzeit teils reduzieren (auf ca. O(n*log2(m))), wieviel eine HashedList bringt, weiss ich nicht, duerfte aber noch mehr Geschwindigkeitsschub liefern.

greetz
Mike
Mike
Passion is no replacement for reason
  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 11:18 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