AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Suchfunktion Ergebnis der Suchanfrage

Ergebnis der Suchanfrage


Datum des Suchindex: Heute, 22:47

Parameter dieser Suchanfrage:

Suche in Thema: Dictionary statt binärer Suche?
Suche alle Beiträge, die von "stahli" geschrieben wurden
• Suchmethode: "Suche nach allen Begriffen"
• Nach Datum (firstpost) sortiert
• Zeige Treffer als Beiträge
Zeige 18 von insges. 18 Treffern
Suche benötigte 0.001s

Es liegen Ergebnisse in folgenden Bereichen vor:

  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 16. Dez 2015
    Das sehe ich auch so.
    Es wäre halt einfacher, wenn man nur eine einfache "Id" als Integer übergeben müsste, die dann von der Komponente in einen passenden Hashwert umgerechnet wird.

    Es würde Fehlermöglichkeiten halt auf einfache Weise reduzieren.
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 15. Dez 2015
    Man muss es halt richtig machen, damit es funktioniert. :-)

    Der Fehler lag dann darin, dass ich GetHashCode unzureichend überschrieben habe.
    Vielleicht wäre es gut gewesen, eine Funktion "DefiniereIntegerwertFürHashcodeBerechnung" zu haben, die man überschreiben kann.
    Aber wenn man weiß wie, dann geht es ja auch so. :-)
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 15. Dez 2015
    Ok, ich akzeptiere die Formel mal so. :-)
    Warum der Strom aus der Steckdose kleckert kann ich ja auch nicht bis ins Detail erklären.

    Die 3 Sekunden werden schon weitestgehend zum Erzeugen der Objekte und füllen mit Daten benötigt, das Dict braucht somit nur einige Millisekunden.
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 15. Dez 2015
    Ich habe das mal in mein Projekt eingebaut und komme so auf 3 Sekunden.

    Ich ahne auch inzwischen, wo mein Denkfehler lag.
    Ich dachte, ich übergebe in GetHashCode einen eindeutigen Integer oder Word-Wert und danach errechnet die Dictionary-Komponente daraus den "wirklichen" Hashwert für das korrekte Fach. M.E. war dieser auch abhängig von der Größe des Dictionarys.

    Schließlich übergibt Sir...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 15. Dez 2015
    Ok, sofern weitere Details interessant sind will ich mal ein wenig die Hosen runter lassen.

    TGuid = record
    private
    ...
    public
    ...
    class operator Equal(const Guid1, Guid2: TGuid): Boolean;
    ...
    property TS1: TDateTime read get_TS1 write fTS1;
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 15. Dez 2015
    Bei Video2Brain ist ein interessantes Tutorial zu Datenstrukturen und darin auch zu Hash-basierten Strukturen.
    https://www.video2brain.com/de/videotraining/programmieren-lernen-datenstrukturen
    Ist halt leider kostenpflichtig.

    Das ist recht einfach gehalten und daher gut verständlich.

    Was Emba im Detail umgesetzt hat kann ich nicht wirklich nachvollziehen.
    Insbesondere erschließt sich mir...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 15. Dez 2015
    Der Sir wollte nur zeigen, dass die Anzahl der Einträge letztlich kein Problem darstellt, was ich nun auch einsehe.

    Offenbar muss man aber für die Berechnung des Hashwertes eine optimale Lösung finden, was mir vorliegend nicht gelungen ist.

    Deshalb hat sich mein Dic nicht performant genug verhalten.

    Aber ich habe mit der einfachen sortierten Liste eine für mich sehr gut passende...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 15. Dez 2015
    Das verbitte ich mir! :stupid:
    Die Zeiten messe ich schon richtig.

    In Tausender-Schritten braucht der Import jeweils unter 1 Sekunde (da wird jeweils noch ein wenig mehr getan als nur ein Create).
    Zweimal dauert es aber deutlich länger:
    bei 197.000: (00:00:25)
    bei 394.000: (00:02:55)


    Es liegt offenbar wirklich daran, dass der Hashwert ungünstig ermittelt wird.
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 15. Dez 2015
    Oh, ich habe jetzt mal mein Dictionary mit einer binären Liste (also Liste mit binärer Suche) ersetzt.

    Es werden 420.000 Objekte erzeugt und gespeichert.
    Das Ergebnis überrascht mich:

    Dictionary:
    420.000: (00:00:01) -> 00:06:57

    Binäre Liste: (aufsteigend)
    420.000: (00:00:00) -> 00:00:04
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 13. Okt 2015
    @Sir Rufo
    Also so völlig ohne Plan macht das m.E. keinen Sinn.

    @Dejan Vu
    Die Bilder sehen schön bunt aus. :-)
    Sehr viel mehr verstehe ich da leider nicht. :oops:
    Bis sich das Gegenteil erweist vertraue ich einfach mal drauf, dass das Dict mit meinem Integer gut zurecht kommt...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 12. Okt 2015
    Hmm, ich sehe nicht, warum meine jetzige Lösung dann langsam sein soll.
    Ich nutze Integerwerte 0..99999, die relativ gleichmäßig verteilt sind.
    Also sind nachher bis 100.000 Töpfe vorhanden, die irgendwann einige Einträge enthalten.

    Als alternatives Kriterium könnte ich meinen zweiten Zeitstempel nehmen. Der ist weitestgehend eindeutig, sollte also i.d.R. nur einmal im Projekt vorliegen....
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 12. Okt 2015
    Hmm, dann habe ich Dich falsch verstanden. :-(

    In meinem Fall gibt die Hashfunktion 0..99999 zurück.
    Das wären doch dann bis 100000 Töpfe und wenige Kollisionen. -> https://de.wikipedia.org/wiki/Hashfunktion
    Ist das nicht ok?
    Nach meinem Gefühl wäre vielleicht ein div 10 oder div 100 sinnvoll, damit nicht so viele Töpfe angelegt werden!?

    Was würde Deine Umrechnung bringen?
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 12. Okt 2015
    Super, dann sollte alles passen.
    Danke!
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 12. Okt 2015
    Ok, vielen Dank!

    Hier wurde das auch schon mal behandelt: http://www.delphipraxis.net/184801-duplicate-values-tdictionary.html ("Compare" gibt es allerdings nicht zum überschreiben.)

    Grundsätzlich funktioniert es jetzt.
    Aber was mir noch nicht ganz klar ist, ist was ich als GetHashCode angeben soll.
    Macht der Comparer nochmal etwas mit meinem Result oder muss ich selbst etwas Sinnvolles...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 11. Okt 2015
    Jetzt habe ich das Problem teilweise schon wieder. :-(
    Mal ein paar Auszüge:

    TGuid = record // eigene GUID
    private
    fTS1: TDateTime;
    fTS2: TDateTime;
    fC: LongWord;
    function get_AsString: String;
    function get_TS1: TDateTime;
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 8. Aug 2015
    Komisch, ich habe mir mal zur Fehlersuche den Inhalt des Dictionarys ausgeben lassen.
    Dann hat es funktioniert - auch nach Entfernen der Logs.
    Da hatte wohl der Linker irgend etwas verwurschtelt...?
    // CodeSite.Send('Get:' + IntToStr(MyDict.Count));
    // for Key in MyDict.Keys do
    // begin
    // S1 := Key.AsString;
    // Value := nil;
    // MyDict.TryGetValue(Key,...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    AW: Dictionary statt binärer Suche?

      Delphi
      by stahli, 7. Aug 2015
    @Schönling
    Ok, wenn das Dict. kopiert und die Hashwerte neu berechnet werden, dann ist das nachvollziehbar. Das wird dann sicher etwas dauern.

    @TiGü
    Ok, dann scheint mein Ansatz erst mal nicht völlig falsch zu sein, was evtl. auch möglich gewesen wäre.
    Ich hatte in der Nacht dann keine Neven mehr, das Problem noch weiter zu zerlegen.

    Ich denke inzwischen, für meinen Fall ist die binäre...
  • Forum: Algorithmen, Datenstrukturen und Klassendesign

    Dictionary statt binärer Suche?

      Delphi
      by stahli, 7. Aug 2015
    Ich halte Interfaces, die eine GUID haben, in einer Liste.

    Mit Hilfe binärer Suche werden die Interfaces anhand der GUID sortiert eingefügt und wieder herausgesucht.

    Das funktioniert schnell und gut.


    Jetzt wollte ich testen, ob es mit einem Dictionary noch schneller ginge.
    Irgendwas mache ich offenbar falsch.
    Count erhöht sich nach einem Add. Aber der Eintrag wird dann nicht gefunden.


URL zu dieser Suchanfrage:

https://www.delphipraxis.net/dp_search.php?do=usersearch&search_username=stahli&search_exact_username=1&search_sortby=dateline&search_resulttype=post&search_matchmode=0&searchthreadid=186142
Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 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