AGB  ·  Datenschutz  ·  Impressum  







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

Ergebnis der Suchanfrage


Datum des Suchindex: Heute, 13:17

Parameter dieser Suchanfrage:

Suche in Thema: Code Optimierung
Suche alle Beiträge, die von "Diamondback2007" geschrieben wurden
• Suchmethode: "Suche nach allen Begriffen"
• Nach Datum (firstpost) sortiert
• Zeige Treffer als Beiträge
Zeige 15 von insges. 15 Treffern
Suche benötigte 0.004s

Es liegen Ergebnisse in folgenden Bereichen vor:

  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    Ich darf halt tmpData nicht als PInteger deklarieren... Dann gibt er mir den fehler dass die Parameter stimmen müssen. Ich brauche also einen untyped Pointer. Außerdem reicht Integer halt nicht aus von der Größe. Bei 13 Millionen Einträgen kommt da was zusammen ;)
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    Okay, Problem gelöst. Ich musste natürlich Data nicht als PInteger sondern als PInt64 deklarieren.
    Hier der gesamte Code:


    var
    StringDic : TStringDictionary;
    tmpPZN : Integer;
    Data : PInt64;
    sl : TStringList;
    sID : string;
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    Hmmm... Ich habe noch etwas Probleme, die Werte aus der Map auszulesen...
    Hier mal mein Code:

    StringDic.First;
    ListBox1.Items.BeginUpdate;
    for i := 0 to StringDic.TotalCount - 1 do
    begin
    StringDic.Next(sID, tmpData);
    ListBox1.Items.Add('ID: ' + sID + ' Summe: ' + IntToStr(Integer(tmpData^)));
    end;
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    Also das mit dem Array scheint nicht zu funktionieren, dafür das mit der Hashmap aber umso besser :)
    Also wenn die Daten die da jetzt rausgekommen sind wirklich stimmen, dann :shock: .
    Er braucht jetzt für die 13 Millionen Einträge kürzer als vorher für 100.000 :lol: .
    Also vielen Dank schonmal :) :) .
    Das war ja eine super Hilfe :dp:
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    Achs



    Okay vielen Dank erst einmal :) Dann werde ich mich mal damit beschäftigen ;)
    Wenn man das Array dynamisch erzeugt klappts dann auch größer oder was? :)
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    Ähm naja das sind Daten aus dem medizinischen Bereich. Kann ich euch also nicht allzu viel zu sagen.
    Es geht nur darum erst mal alle doppelten zu finden und zu addieren und danach alle IDs die die selbe Summe an PZNs haben zu einer Gruppe zusammenzufassen.
    Die Hashmap ist groß genug, die vergrößert sich von selber :)
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    So, ich hätte jetzt folgenden Code:

    for i := 0 to sl.Count - 1 do
    begin
    if not StringDic.Find(ExtractID(sl.Strings), Data) then
    begin
    tmpPZN := StrToInt32_JOH_IA32_7_a(ExtractPZN(sl.Strings));
    Data := @tmpPZN;
    StringDic.Add(ExtractID(sl.Strings), Data);
    end
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    Nochmal zu der Hashmap.... Könnte ich die auch so verwenden wie das mit dem Array gezeigt wurde? Also Liste durchgehen, ID als Index in der Hasmap speichern und dann als Data die PZN. Dann über Find gucken ob die ID schon vorhanden ist, und wenn ja dann addieren, wenn nein dann enben hinzufügen. Wäre das schnell? Wie könnte ich denn den Dataoutpout bei Find verändern? Einfach den Wert an der...
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 22. Jul 2008
    Ja, da werde ich mich wohl mal mit auseinander setzen. Das sieht ja ganz nett aus ;)
    Ich möchte zwar nicht die doppelten Einträge löschen sondern nur suchen und den zweiten Teil des Eintrages (die PZN) ausummieren. Aber ist ja prinzipiell kein großer Unterschied.




    Das habe ich mal grade ganz schnell getestet, aber ich glaube ich kann keine Array erstellen die so groß sind. Jedenfalls...
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 21. Jul 2008
    Ist es denn sinnvoll 13 Millionen Einträge vorher zu sortieren? wenn ja wäre das natürlich super :)
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 21. Jul 2008
    Hm...Das verstehe ich nicht... Wo extrahiere ich denn zwei Mal die selben Daten?
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 21. Jul 2008
    Auf die Daten an sich habe ich leider keinen Einfluss, die muss ich nehmen wie sie kommen.
    Und wo speichere ich eine zahl nicht als Zahl? eher andersherum ;) Einen string als Zahl ;)

    Das Setzen von SetLength vor der Schleife hat bei 100.000 Sätzen noch nicht wirklich was gebracht, aber ich denke bei mehr sollten das was bringen.



    Also sl ist nicht sortiert und die Größe ändert sich...
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 21. Jul 2008
    Obwohl also ich könnte natürlich eine statisches Array draus machen mit ner Größe die auf jeden Fall reicht. Macht das Sinn?
  • Forum: Object-Pascal / Delphi-Language

    Re: Code Optimierung

      Delphi
      by Diamondback2007, 21. Jul 2008
    Ich weiß aber nicht wie groß das Array wird... :(
  • Forum: Object-Pascal / Delphi-Language

    Code Optimierung

      Delphi
      by Diamondback2007, 21. Jul 2008
    Hallo zusammen,

    ich habe hier einen ganz kleinen Algorithmus den ich gerne noch etwas optimieren würde, da er sehr zeitkritisch ist.

    Hier mal die interessanten Stellen:


    while sl.Count > 0 do
    begin
    SetLength(IDArray, Length(IDArray) + 1);


URL zu dieser Suchanfrage:

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