Algorithmen, Lösungsmethoden, Vergleich ihrer Leistung - Seite 7

 
Alexandr Andreev:

Nun, kurz gesagt ist eine Zeichenkette einZeichen mit einem Code von 0 bis 255 und wiegt 1 Byte... und es ist gerade genug Speicher für 256 Werte zugewiesen, 257 passen da nicht rein, es wird zum ersten zurückgeschaltet.

Auf jeder Seite ist jedes Zeichen eine Zahl von 0 bis 255... Wir nehmen also die Zahl 10000000 - sie wiegt 4 Bytes, wandeln sie in die Zeichenkette "10000000" um und weisen dann für jedes Zeichen Speicherplatz zu, wie für eine einzelne Tabelle von 0 bis 255... 8 Bytes insgesamt. Es wird nirgendwo Speicherplatz eingespart.

Ich verstehe, was Sie meinen.

Wir müssen den Speicherbedarf dieser Lösung genau berechnen.

 
Реter Konow:

Sie können mit dem Schreiben der zweiten Zeile beginnen. Dann die dritte und so weiter... :)

Jetzt verstehe ich, warum es so lange dauert, den "Konstruktor" zu erstellen.
 
Vasiliy Sokolov:


p.s. Ach ja, Sie haben noch einen Fehler. Wenn MathRand beim dritten Aufruf z.B. die Zahl 1000 liefert und _3_1000_ schreibt, welche Art von Medge wird dann für eine Transaktion mit der Auftragsnummer 1000 gefunden?

Der Punkt ist, dass MathRand nur zur Simulation von Medigee-Zahlen benötigt wird.

Die Medjic-Zahlen werden vom Benutzer festgelegt, und es kann ein Wert von weniger als 100.000 (sagen wir) umgangen werden.

Möglicherweise liegt jedoch ein Fehler in dem angegebenen Beispiel vor. Sie haben Recht.

Danke für den Hinweis. Eine vollständige Lösung sollte dies berücksichtigen.

 
Реter Konow:

Ich verstehe, was Sie meinen.

Wir müssen den Speicherbedarf dieser Lösung genau berechnen.


Dadurch werden auch viele Ressourcen für interne Verweise verschwendet, da der Zugriff auf jedes Zeichen der Zeichenfolge dem Zugriff auf das Array char[x] entspricht. Ein Link ist in diesem Fall der Zugang zu einem bestimmten Array-Element. Und Sie werden sich dort durch riesige Stapel von ihnen durcharbeiten. Die Umsetzung mit int wäre um ein Vielfaches einfacher und schneller zu verstehen...

Was die Begrenzung der Länge der Zeichenkette betrifft, so hängt sie in der Regel von der maximalen Größe des Arrays char[x] ab - auch dieses hat seine eigene Obergrenze.

 

Der Mann ist sich des Ausmaßes seiner eigenen Dummheit wirklich nicht bewusst.
Der Dunning-Kruger-Effekt in Aktion.

 

Es ist ok, eine Person braucht nur eine nicht typisierte Sprache und keine Probleme))

obwohl es immer noch einen Unterschied in der Geschwindigkeit geben wird
 
Vasiliy Sokolov:
p.s. Ach ja, Sie haben noch einen Fehler. Wenn MathRand beim dritten Aufruf z.B. die Zahl 1000 liefert und _3_1000_ schreibt, welche Magie wird dann für den Umgang mit der Ordnungszahl 1000 gefunden?
Es wird ein bisschen mehr "denken" und dieses Problem lösen: Setzen Sie einen Unterstrich vor den Deal und ein anderes Symbol vor den Magier :)
 
Alexandr Andreev:

Dadurch werden auch viele Ressourcen für interne Verweise verschwendet, da der Zugriff auf jedes Zeichen einer Zeichenkette dem Zugriff auf char[x] eines Arrays gleichkommt. Ein Link ist in diesem Fall der Zugang zu einem bestimmten Array-Element. Und Sie werden sich dort durch riesige Stapel von ihnen durcharbeiten. Die Umsetzung mit int wäre um ein Vielfaches einfacher und schneller zu verstehen...

Was die Begrenzung der Länge der Zeichenkette betrifft, so hängt sie in der Regel von der Begrenzung der maximalen Größe des Arrays char[x] ab - dieses hat seine eigene Obergrenze, wie auch andere.

Wir können es nicht mit int implementieren, weil wir die Anzahl der zukünftigen Transaktionen nicht im Voraus kennen. Wir müssen entweder raten oder die Größe des Arrays bei jedem Handel ändern und die Daten hin und her schreiben.

Wie sollen wir es sonst machen?

Die Geschwindigkeit meiner Lösung ist wahnsinnig.

Es wird Speicher verbraucht, aber es ist nicht bekannt, wie ineffizient. Wir müssen das mit Sicherheit herausfinden.

 
Yury Kulikov:
Er wird ein bisschen mehr "nachdenken" und dieses Problem lösen: er wird einen Unterstrich vor die Transaktion setzen und ein anderes Symbol vor den Magier :)

Ich möchte darauf hinweisen, dass Peter, im Gegensatz zu allen anderen hier, wahrscheinlich die größte Geduld hat - und eine Bereitschaft für monotonen Code. Anders ist es nicht zu erklären, wie er es geschafft hat, so viel zu schreiben.

 
Реter Konow:

Wir können nicht mit int arbeiten, weil wir die Anzahl der zukünftigen Abschlüsse nicht im Voraus kennen. Entweder müssen wir raten, oder wir müssen die Größe des Arrays ändern und die Daten bei jedem Handel hin und her überschreiben.

Wie können wir es sonst tun?

Die Geschwindigkeit meiner Lösung ist wahnsinnig.

Es wird Speicher verbraucht, aber es ist unbekannt, wie ineffizient. Wir müssen das mit Sicherheit herausfinden.


Es gibt nur zwei Varianten der Zeichenkette: entweder hat sie eine maximale Größe (in Reserve), oder der Speicher wird zugewiesen, und in Ihrem Fall wird er während des Additionsprozesses jedes Mal zugewiesen.... Es ist also dasselbe wie das Ändern der Größe eines int-Arrays. 1in1 gut vielleicht dauert es 10% länger für int, um Speicher zuzuweisen, als für String, um Speicher für 1 Zeichen zuzuweisen, wenn Sie mehr Zeichen vergleichen, dann schätze ich, dass int gewinnt

Grund der Beschwerde: