AW: AW: Allegro-Grenzen?

Thomas Fischer fischer at mail.sub.uni-goettingen.de
Mo Mai 3 14:19:12 CEST 2004


Hallo Herr Berger,

danke für die Hinweise.

> -----Ursprüngliche Nachricht-----
...
> |>| Der fragliche Programmteil ist
> |>| (mit #udx = '|2' und den zu suchenden Sätzen in #usv):
> |>|
> |>| #-t
> |>| #udx
> |>| #usv e' '
> |>| #usv b' ' f32 =sv
> |>| #usv e' ' p' '
> |>| #t{8}
> |>| #usv +t c' ' e0
> |>| #udx ddx dsv e0
> |>
> |>wenn #usv auf ' ' endet, entsteht eine Endlosschleife.
> |>
> |
> | Die Definition von #usv ist
> | #usu dsv f32 F32 c' ' =sv    	für Doppeleinträge, wenn 
> Leerzeichen da
> |
> | da sollte am Ende kein Leerzeichen stehen können.
> 
> ... sofern #usu stets belegt ist oder #usv vorher
> nie anders belegt wurde...

#usu ist eine Kopie von #u1, #usv wird nach jedem Durchlauf mit dsv gelöscht.
> 
> | Wenn, was ich nicht geprüft habe, aber Ihnen glaube würde, wiederholte
> Ausführung von
> |  #usv b' ' f32 =sv
> | nicht auf die Dauer zu einem leeren #usv führt, ist das meines
> Erachtens ein Problem der Programmiersprache.
> 
> Ein Problem sollte es m.E. wirklich nur geben, wenn #usv mit
> Blank endet.

Kurzer Test mit A99 v24.4 brachte folgende Ergebnisse:
1. Die Kombination
#usv b' ' f32 =sv
schneidet alle Leerzeichen am Anfang ab, auch alle Leerzeichen am Ende werden auf einen Schlag entfernt.
2. Die obige Setzung führt zu einer "leeren" #usv, die aber noch "da ist"; z.B. ein Sprung
#usv +t e0
wird immer noch ausgeführt, wenn ks=1 gilt. Erst dsv löscht #usv vollständig.
 
> Es schadet nichts, auch diesen lt. Ihrer Definition
> von #usv eigentlich nicht vorkommenden Fall abzufangen:

> #-t
> #udx
> #usv e' '
> #usv b' ' e' ' p' '
> #usv +t dsv b' ' f32 p{8} asv     % c' ' vor asv noch effizienter?
> #udx ddx e0

Das kann ich ja machen. Ist dsv asv effektiver als dsv =sv? Und hat das irgendwelche Vorteile gegenüber =sv ohne dsv?

> 
> | Ich habe die Zahl der Schleifen jetzt begrenzt und damit erfolgreiche
> Durchläufe erreicht.
> | Protok meldet
> | "max. Anzahl Schlüssel je Satz: 487"
> | ob ich mehr erreichen kann, weiß ich nicht.
> 
> Seit Version 23.irgendwas ist bei der Indexierung das Limit von 500
> Schluesseln pro Datensaetze eigentlich gefallen. Ist Ihre INDEX.EXE
> eher aeltlich?

Ist sie nicht, aber genaues ist schwer zu ermitteln. Mein A99 ist Version 24.4, die Eigenschaften von index.exe melden:
Erstellt: Dienstag, 27. Januar 2004, 16:12:35
Geändert am: Dienstag, 20. April 2004, 11:24:40
Größe: 202.994 Bytes

Daraus müsste sich die Version irgendwie (?) erschließen lassen...
> 
> | Irritierend ist, dass Protoq meldet:
> | "INDEX 10 enthält 8926 Einträge",
> | im Index 10 aber nur 4463 einträge enthalten sind.
> | Ähnliches scheint bei allen anderen Indizes zu gelten.
> |
> | Hat dazu jemand Ideen?
> 
> 4463 verschiedene mit zusammengenommen 8926 Treffern?

Nein, in dem Register stehen Identnummern: Jeder Treffer tritt genau ein mal auf, 4463 ist die Zahl der Datensätze (auch nach Sniffer). (Warum A99 4497 meldet, also die unbelegten Nummern mitzählt, weiß ich nicht.)
Unabhängig davon dachte ich, dass Protoq die *verschiedenen* Einträge angibt.

Bei einer neuen Indizierungs-Runde bekomme ich einen Absturz, wenn ich meinen Schleifenzähler deaktiviere und erfolgreiche Indizierung bei 100 Runden. Dabei aber zur Abwechslung:
INDEX 10 enthält 4470 Einträge
und
max. Anzahl Schlüssel je Satz: 429
 

Etwas ratlos, aber mit freundlichen Grüßen
Thomas Fischer 





Mehr Informationen über die Mailingliste Allegro