Re: Bedingte Abfragen in Abfragen...



Hallöchen!

Am Tue, 07 Oct 2008 21:23:48 +0200 schrieb Georg Bauhaus:

Matthias Schramm wrote:

Letzten Endes wäre für dieses Problem aber die Implementation von
Strings des guten alten Pascals am schnellsten. Einfach die aktuelle
Länge immer als Wert mit schleifen. Dann kann man die auch direkt mit
einander vergleichen. Einziger Nachteil ist halt eine maximale Länge.

Die Länge eines mit char* adressierten strings scheint mir auch
begrenzt, nämlich durch die jeweilige "Reichweite" von char*. Wenn ein
string statt mit char* mit Hilfe eines Pascal-artigen Konstrukts
implementiert wäre, ähnlich wie struct {
ptrdiff_t len;
char * data;
}, dann spielt vermutlich die Parameter-Übergabe eine Rolle. Größe und
Struktur eines "Pascal-strings", die pro Aufruf an eine string-Funktion
übergeben werden müssten, wären anders. Damit kommen die Anzahl der
Parameter und die verfügbaren Register der CPU zum tragen, usw., schätze
ich. Allzu schlimm wirds vielleicht nicht sein.

Da lässt sich wahrscheinlich wieder vortrefflich drüber streiten!
Immerhin kommt die C-Variante Streams und Stringmanipulationen sehr
entgegen.

In der Pascalvariante müsste dir der String in voller Länger vorher
bekannt sein, damit du seine Länge *vorher* übermitteln kannst.
In der C-Konvention brauchst einfach nur Zeichen für Zeichen zu schreiben.

Wenn Du einen String sequenziell abarbeiten möchtest, dann musst Du in
der pascalischen Version leider auch immer die Anzahl der schon fertigen
Zeichen mitschleifen.

Ein anderes Beispiel wäre das Tokenizing. In C brauchst du bloß alle
Trennzeichen durch Null-Zeichen zu ersetzen und die Pointer auf die
einzelnen Startstellen zurück liefern. In Pascal müsstest Du
wahrscheinlich anfangen die Teilstring im Speicher hin und her zu
schieben, um den Platz für die Größenangabe her zu stellen, oder hast im
Fall von ASCII maximal eine Länge von 255 Zeichen.

Vorteil bei der Pascalischen Version ist jedoch das leichtere Laden von
Strings aus einer Datei, da Du einfach erstmal nur Größe auslesen und
danach entsprechend Speicher anlegen kannst.

MfG
Matjes
.



Relevant Pages

  • Re: DLL-Functionsaufruf mit Ref auf Ref
    ... > BSTR * rCertificate, ... Länge des Strings wird gesondert gespeichert. ... Zeiger auf das erste Zeichen im Speicher. ...
    (microsoft.public.de.fox)
  • Re: Java langsam? Swing zeichnet langsam? oder zeichnet nur Graphics2Dlangsam? Oder mache ich was fa
    ... holst du in engen Schleifen immer wieder 'scenario.getGrid', ... Das ich an meinen berechungen auch zeit verliere is klar, bloss die hauptursache ist zur zeit definitiv das zeichen. ... public class PaintFastness extends JFrame{ ... private static final class PaintMe extends JPanel { ...
    (de.comp.lang.java)
  • Re: ANSI oder nicht ANSI?
    ... Zugriffe auf Zeichen innerhalb der Strings. ... Du brauchst eigentlich kein MBCS System, ... SET LeadBytes nicht gefüllt ist, ...
    (de.comp.lang.delphi.misc)
  • Re: utf-8 und DBD::mysql
    ... Perl unterscheidet zwischen Byte-Strings und Character ... d.h. der Character mit der Nummer 65 ist immer ... Ein Zeichen ist ein Zeichen, ... ist, wenn "Character Strings" gemeint sind, und dass es Funktionen wie ...
    (de.comp.lang.perl.misc)
  • Re: Unicode Emails vom Server als HTML files sichern oder so aehnlich..
    ... Perl ja alles irgendwie wie ein String.:) ... Seit Perl 5.6 sind Strings in Perl nicht mehr Folgen von 8-Bit-Werten ... Alle ISO-8859-* sind bis Zeichen 127 identisch. ... behandeln willst, musst Du auch die Zeichen über 0x7F richtig behandeln. ...
    (de.comp.lang.perl.misc)