AGB  ·  Datenschutz  ·  Impressum  







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

Array durchsuchen

Ein Thema von Muellermilchtrinker · begonnen am 12. Sep 2010 · letzter Beitrag vom 13. Sep 2010
Antwort Antwort
Satty67

Registriert seit: 24. Feb 2007
Ort: Baden
1.566 Beiträge
 
Delphi 2007 Professional
 
#1

AW: Array durchsuchen

  Alt 12. Sep 2010, 16:51
HashListe kenne ich als Liste, bei der die Array-Position durch den HashCode definiert ist. Also der Hash quasi als Index. Also im Prinzip das was Alzaimar als HashMap kennt.

Wo ich Alzaimars Post nochmal durchlese:
GesuchteDaten := Daten[HashByte1, HashByte2, HaschByte2, ... HaschByteN]; .
Die Länge eines HashCodes ist bei den meisten Hash-Funktionen ja bekannt... Will mann doppelte (identische) Listeeinträge aber nicht ignorieren, wird es lustig.Für doppelte Einträge eine Struktur Count,Value.

Wenn ich mich nicht verrechnet habe, braucht eine Einfache Hashliste basierend auf MD5 nur 40 KB für den Index.

Ich überlege gerade, ob der Threadstarter überhaupt an weiterführenden Lösungen interessiert ist.

Geändert von Satty67 (12. Sep 2010 um 17:24 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Array durchsuchen

  Alt 12. Sep 2010, 23:15
Moin Matze,
dürfte da nicht Sekunden statt Millisekunden raus kommen?

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Array durchsuchen

  Alt 13. Sep 2010, 16:48
Als ich versteh da was nicht:
meine Funktion:
Delphi-Quellcode:
function SearchArray(Suchmaske:String):Integer;
  var i:Integer;
begin
  Result := 0;
  for i := 0 to high(asz) do
  begin
    if asz[i]=Suchmaske then
    begin
      result := i;
      break;
    end;
  end;
end;
So mach ich die Zeitmessung:

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
  var
  i: Integer;
  Start, Stop: Integer;
begin
  Start := GetTickCount;

  for i := 1 to 1000 do
  begin
    SearchArray('Z');
  end;

  Stop := GetTickCount;

  ShowMessage(FloatToStr((Stop - Start) /1000) + ' ms');
end;
Asz ist das Array da steht A bis Z drin.

Ich bekomm bei Z eine Zeit von 0 ms.
Da stimmt doch was net.
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Array durchsuchen

  Alt 13. Sep 2010, 16:56
Zitat:
ShowMessage(FloatToStr((Stop - Start) /1000) + ' ms');
Das vor dem Komma sind Sekunden (wegen dem /1000)

Erhöhe mal die Anzahl der Durchläufe.
GetTickCount hat 'ne Auflösung von etwa 16ms und es wird abgerundet.
(eine Dauer von weniger als 16ms kann 0 ergeben)
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Muellermilchtrinker
Muellermilchtrinker

Registriert seit: 1. Aug 2009
447 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Array durchsuchen

  Alt 13. Sep 2010, 17:26
Bei 1 Millionen Durchläufen bekomm ich eine Zeit von 0,562 ms
Chuck Norris doesn't need backups. He just uploads his files and lets the world mirror them.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Array durchsuchen

  Alt 13. Sep 2010, 17:47
Nimm mal das /1000 aus der Berechnung oder nimm "s" statt "ms"
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

AW: Array durchsuchen

  Alt 13. Sep 2010, 20:47
Nimm mal das /1000 aus der Berechnung oder nimm "s" statt "ms"
Was ich nicht sag

Aber abgesehen davon: Wenn man 26 Einträge 1000 Durchsucht und man erwartet werte mit mehreren hunderstel Sekunden (so ab 30 ms), dann braucht man eine CPU die selbst du schlagen kannst beim Kopfrechnen

MfG
Fabian
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Antwort Antwort


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 18:43 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