ENGLISH VERSION |
|
Links | | | Forum | | | Kommentare | | | News melden |
Chat | | | Umfragen | | | Newsticker | | | Archiv |
amiga-news.de Forum > Programmierung > Wieviele Files in Dir? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
1 2 -3- | [ - Beitrag schreiben - ] |
07.01.2012, 13:43 Uhr Thore Posts: 2266 Nutzer |
Recht viele Sprünge drin, die kosten. Auf nem 68060 kein Thema mit dem Branch Cache aber die anderen 68k müssen ackern. Allerdings fraglich obs hier wirklich anders geht. Hast Dus mal auf Geschwindigkeit geprüft? Ist es bei deiner Anzahl Nodes schneller als Linearsuche? Wenn Du die Anzahl Nodes vorher prüfst und bis zu nem gewissen Wert Linearsuche verwendest und ab nem gewissen Wert Interpolation/Binärsuche dann hast Du ein absolutes Optimum an Geschwindigkeit. Musst nur ausloten wo die Grenze liegt. [ Dieser Beitrag wurde von Thore am 07.01.2012 um 13:44 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
07.01.2012, 14:49 Uhr AGSzabo Posts: 1663 Nutzer |
@Thore: > Hast Dus mal auf Geschwindigkeit geprüft? Ich konnte bisher keinen Unterschied feststellen. Der PC an dem ich zur Zeit bin ist sowieso viel zu langsam, besonders die Platte. Daheim kann ich dann besser testen. So Spielchen wie zuerst alle (!) Dateien einlesen (großer Buffer) und dann sehen wie lange das reinen Einfüllen dauert, hab ich schon ausprobiert und keinen Unterschied bemerkt. > Musst nur ausloten wo die Grenze liegt. Ja sowas ging mir auch schon durch den Kopf. Ich vermute so ab 2500 Files. -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ - Antworten - Zitieren - Direktlink - ] |
08.01.2012, 11:29 Uhr AGSzabo Posts: 1663 Nutzer |
Bahh, ich habe leider festgestellt, dass mein schöner Algo vermutlich nur bei sehr großen Datenmengen ein paar Fehler mit rein bringt. Und zwar keine einzelnen Ausrutscher, sondern ganze Blöcke von Namen mit dem selben Anfangsbuchstaben landen an der falschen Stelle. Das Problem tritt aber nur sporadisch auf. Außerdem hatte der .strcmp code den Fehler, dass die Case-Unabhängigkeit auch bei Chars außerhalb der Buchstaben das Bit 5 gelöscht hat, was bei Satzzeichen zB zu Fehlern führt. Hab ich mal ganz raus genommen. Dafür konnte ich das leeren von d0 und d1 am Anfang der Funktion einsparen und das sub.l d0,d1 zu sub.b machen. Das geht offenbar genauso: code:.cmploop move.b (a1)+,d1 move.b (a0)+,d0 beq.s .cmp cmp.b d0,d1 beq.s .cmploop .cmp sub.b d1,d0 .rts rts -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ Dieser Beitrag wurde von AGSzabo am 08.01.2012 um 11:56 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
09.01.2012, 11:46 Uhr AGSzabo Posts: 1663 Nutzer |
@Holger:Zitat: Hab ich jetzt mal versucht, so um zu setzen. Da ist ein Problem gleich zu Anfang aufgetreten: Angenommen es sind zwei Nodes, da gibt es keine Mitte und ich weiß nicht, ob der neue Knoten vor den ersten, oder zwischen beide, oder nach dem zweiten eingefügt werden muss. Diese Situation kann auch am Ende des Suchvorgangs eintreten. -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ - Antworten - Zitieren - Direktlink - ] |
09.01.2012, 17:26 Uhr Holger Posts: 8116 Nutzer |
Zitat:Zu Beginn musst Du natürlich überprüfen, ob Dein Knoten überhaupt zwischen Anfangs- und Endknoten liegt. Gehört er vor den ersten oder hinter den letzten, weißt Du ja, was zu tun ist. Zitat:Nö, wie denn? Wenn Du die Anfangssituation geprüft und den Algorithmus korrekt implementiert hast, gibt es überhaupt kein Problem. Du weißt mit Sicherheit, dass der Knoten hinter A und vor E gehört, also weißt Du, dass er zwischen A und E gehört. Gibt es zwischen diesen beiden Knoten keinen weiteren (also auch keine Mitte) mehr, bist Du fertig. -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
09.01.2012, 17:29 Uhr Holger Posts: 8116 Nutzer |
Zitat:Wieso? Glaubst Du, den User interessiert es, ob Satz- und Sonderzeichen korrekt nach ASCII-Code sortiert sind? -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
09.01.2012, 18:09 Uhr AGSzabo Posts: 1663 Nutzer |
@Holger: Ok, ich habe es hin bekommen. Problem, es ist total slow. Was siehst du? code:.binary ; new node in a4, used in .cmpnodes ; get most left node to a2 and ; most right node to d2 move.l (a7),a0 move.l oxO_list(a0),a2 move.l oxO_list+8(a0),d2 ; neue node links oder rechts aussen? move.l a2,a5 bsr .cmpnodes bge .linksaussen move.l d2,a5 bsr .cmpnodes bgt .schleife ; rechtsaussen move.l d2,a2 bra .add .schleife ; folgt rechts auf links? cmp.l (a2),d2 beq .add ; wenn nur eine node zwischen liegt, ; gehe nur eins vorwärts move.l a2,a5 lsr.w #1,d5 move.w d5,d0 beq .vorwaerts subq.w #1,d0 .vorwaerts move.l (a5),a5 dbf d0,.vorwaerts ; ist die neue node links oder rechts vom pivot? bsr .cmpnodes bgt .ist_links ; ist rechts, ersetze linken rand durch pivot move.l a5,a2 bra .schleife .ist_links ; ersetze rechten rand durch pivot move.l a5,d2 bra .schleife .linksaussen sub.l a2,a2 .add ; einfügen nach node in a2 -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ Dieser Beitrag wurde von AGSzabo am 09.01.2012 um 18:12 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 09.01.2012 um 18:33 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 09.01.2012 um 18:42 Uhr geändert. ] [ Dieser Beitrag wurde von AGSzabo am 09.01.2012 um 19:00 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
09.01.2012, 18:11 Uhr AGSzabo Posts: 1663 Nutzer |
@Holger: > Wieso? Glaubst Du, den User interessiert es, ob Satz- und Sonderzeichen korrekt nach ASCII-Code sortiert sind? Bei mir hat sich das Satzzeichen unter die Buchstaben gemischt. -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ - Antworten - Zitieren - Direktlink - ] |
09.01.2012, 20:10 Uhr Holger Posts: 8116 Nutzer |
Zitat:Welches Satzzeichen, welcher Buchstabe? Es kann eigentlich nicht passieren, weil diese Bit-Clear Operation ziemlich genau und auch umkehrbar die Groß- und Kleinbuchstaben aufeinander mappt. Einziger Fehler, den ich erkennen kann, ist, dass ÿ wie ein ß behandelt wird, was allerdings nicht so wichtig ist, weil es weder das große ß, noch das Ÿ im 8 Bit Zeichensatz des Amigas gibt. Klar, das ist keine richtige alphabetische Sortierung oder Ordnung nach DIN 5007 oder ähnliches, aber als einfacher String-Vergleich sollte er eigentlich funktionieren. -- [ Dieser Beitrag wurde von Holger am 09.01.2012 um 21:13 Uhr geändert. ] [ - Antworten - Zitieren - Direktlink - ] |
09.01.2012, 20:23 Uhr AGSzabo Posts: 1663 Nutzer |
@Holger: > Welches Satzzeichen, welcher Buchstabe? Der Punkt wollte manchmal nicht da liegen, wo er hingehört. Aber ich habs eben nochmal getestet: es kommt mit dem bitclear zB "test" zwischen "test (4. Kopie)" und "test (5. Kopie)" zum liegen. -- Author of Open eXternal User Interfaces, eXternal Format Rippers and the Book "Torakosmos". Developing with E-UAE on an Ubuntu dualcore system. [ - Antworten - Zitieren - Direktlink - ] |
09.01.2012, 20:35 Uhr Holger Posts: 8116 Nutzer |
Zitat:Ahh, so ergibt es einen Sinn. Das hat nichts mit dem Punkt zu tun, sondern mit dem Leerzeichen, das nach Löschen des Bits ein null-byte ist und wie ein String-Ende behandelt wird. -- Good coders do not comment. What was hard to write should be hard to read too. [ - Antworten - Zitieren - Direktlink - ] |
1 2 -3- | [ - Beitrag schreiben - ] |
amiga-news.de Forum > Programmierung > Wieviele Files in Dir? | [ - Suche - Neue Beiträge - Registrieren - Login - ] |
Impressum |
Datenschutzerklärung |
Netiquette |
Werbung |
Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten. |