Das war bisher auch immer so gedacht. Von daher kommt es jetzt drauf an, ob der Code tatsächlich schneller ist.Sicro hat geschrieben:Der Nachteil bei diesem Code ist, dass er verschobene Zeilen nicht als Unterschied erkennt.Datei 1 hat geschrieben:Hans
Peter
ThomasDie Beispieldateien oben wären also laut dem Code identisch, obwohl die ersten zwei Zeilen unterschiedlich sind.Datei 2 hat geschrieben: Peter
Hans
Thomas
FindMapElement
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: FindMapElement
Re: FindMapElement
Naja, die Map-Technik kann erst ihre Stärken zeigen, wenn viele Einträge doppelt vorhanden sind.
Wenn keine Duplikate vorhanden sind, gehe ich aktuell davon aus, dass Maps in meinem Code langsamer sind, da beim Hinzufügen der Elemente jedes Mal ein Hash berechnet werden muss, was bei den Listen (AddElement()) ja nicht erforderlich ist, aber in dem Fall kann die Map im Code ja einfach zu einer Liste umgeschrieben werden.
Ich bin gespannt auf das Ergebnis.
Wenn keine Duplikate vorhanden sind, gehe ich aktuell davon aus, dass Maps in meinem Code langsamer sind, da beim Hinzufügen der Elemente jedes Mal ein Hash berechnet werden muss, was bei den Listen (AddElement()) ja nicht erforderlich ist, aber in dem Fall kann die Map im Code ja einfach zu einer Liste umgeschrieben werden.
Ich bin gespannt auf das Ergebnis.


Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
-
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Re: FindMapElement
Guten Morgen Sicro,
die Auswertung dauert ca. 2ms. Also sehr schnell. Nur am Ergebnis stimmt was nicht.
Ergebnis Datei1: ok
Ergebnis Datei 2: falsch.
- Anzeige Anzahl 2 - Ist = 1
- Es wird kein String angezeigt.
Der String der angezeigt werden müsste befindet sich in der Datei 2 in der letzten Zeile.
die Auswertung dauert ca. 2ms. Also sehr schnell. Nur am Ergebnis stimmt was nicht.
Ergebnis Datei1: ok
Ergebnis Datei 2: falsch.
- Anzeige Anzahl 2 - Ist = 1
- Es wird kein String angezeigt.
Der String der angezeigt werden müsste befindet sich in der Datei 2 in der letzten Zeile.
Re: FindMapElement
Ok, aber mit deinen Angaben kann ich leider nichts anfangen.
Kannst du deine zwei Testdateien vielleicht irgendwo hochladen und uns zum Download anbieten?
Kannst du deine zwei Testdateien vielleicht irgendwo hochladen und uns zum Download anbieten?

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
-
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Re: FindMapElement
Guten Abend,
geht leider nicht, da es keine Testdaten sind.
geht leider nicht, da es keine Testdaten sind.
Re: FindMapElement
Diese Zeile wäre für eine Lösungsfindung wichtig. Kannst du diese vielleicht anonymisiert nennen?Martin66119 hat geschrieben:Der String der angezeigt werden müsste befindet sich in der Datei 2 in der letzten Zeile.
Die Maps kommen eigentlich auch mit Keys klar, die Sonderzeichen oder Unicode-Zeichen enthalten, aber irgendwas muss in der Zeile stören.

Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
- NicTheQuick
- Ein Admin
- Beiträge: 8807
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: FindMapElement
Ich bin jetzt ja schon etwas neugierig. Was sind das denn für Dateien, die offensichtlich zeilenbasiert und so geheim sind? 

-
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Re: FindMapElement
Guten Morgen,
ich habe mal Testdaten erstellt, bei denen das Problem auch auftaucht.
Zahlen habe ich im Editor reingeschrieben (jede Zahl in eine neue Zeile; ohne das Komma)
Datei1.txt: 30,300
Datei2.txt: 1,2,3,3999,3999
Ergebnis:
Nur in Datei2:
Anzahl: 2
Nur in Datei 2: 3999
Anzahl: 1
Nur in Datei 2: 2
Anzahl: 1
Nur in Datei 1: 300
Anzahl: 1
ich habe mal Testdaten erstellt, bei denen das Problem auch auftaucht.
Zahlen habe ich im Editor reingeschrieben (jede Zahl in eine neue Zeile; ohne das Komma)
Datei1.txt: 30,300
Datei2.txt: 1,2,3,3999,3999
Ergebnis:
Nur in Datei2:
Anzahl: 2
Nur in Datei 2: 3999
Anzahl: 1
Nur in Datei 2: 2
Anzahl: 1
Nur in Datei 1: 300
Anzahl: 1
Re: FindMapElement
Der Fehler tritt bei mir auch auf. Offensichtlich hängt das irgendwie mit mit dem Anlegen der Map-Elemente zusammen.
Wenn ich die Zeile
auftrenne in
funktioniert es richtig.
Wenn ich die Zeile
Code: Alles auswählen
Compare(ReadString(0))\ExistsInFile1 + 1
Code: Alles auswählen
key$ = ReadString(0)
Compare(key$)\ExistsInFile1 + 1
Code: Alles auswählen
EnableExplicit
Structure CompareMapStruc
ExistsInFile1.i
ExistsInFile2.i
EndStructure
#Slots = 512 ; Dieser Wert erhöhen, um die Zugriffsgeschwindigkeit bei großen Datenmengen zu erhöhen (siehe PB-Hilfe)
NewMap Compare.CompareMapStruc(#Slots)
Define key$
If ReadFile(0, "Datei1.txt")
While Not Eof(0)
key$ = ReadString(0)
Compare(key$)\ExistsInFile1 + 1
Wend
CloseFile(0)
EndIf
If ReadFile(0, "Datei2.txt")
While Not Eof(0)
key$ = ReadString(0)
Compare(key$)\ExistsInFile2 + 1
Wend
CloseFile(0)
EndIf
ForEach Compare()
If Compare()\ExistsInFile1 And Not Compare()\ExistsInFile2
Debug "Nur in Datei 1: >" + MapKey(Compare()) + "<"
Debug " Anzahl: " + Str(Compare()\ExistsInFile1)
Debug "---------------------------------------------"
ElseIf Compare()\ExistsInFile2 And Not Compare()\ExistsInFile1
Debug "Nur in Datei 2: >" + MapKey(Compare()) + "<"
Debug " Anzahl: " + Str(Compare()\ExistsInFile2)
Debug "---------------------------------------------"
EndIf
Next
-
- Beiträge: 282
- Registriert: 03.01.2005 11:36
Re: FindMapElement
Komme erst am WE dazu nachzuschauen ob es nun bei mir auch geht.
Jedenfalls schon einmal vielen Dank
Martin
Jedenfalls schon einmal vielen Dank
Martin