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

 
Alexandr Andreev:

Was ist falsch mit einem normalen Array von Ints? Warum die thongs....

Denn wir wissen nicht im Voraus, wie viele Trades der EA machen wird. Wir müssen im Voraus Speicher für das Array zuweisen, wissen aber nicht, wie viel.

Wir mussten also eine Lösung finden, die schnell und kurz ist und keinen unnötigen Speicherplatz beansprucht.

 
Реter Konow:

Nicht wirklich.

...

Wieder einmal verstehen Sie nicht, worüber wir reden. Die Handelsnummer wird vom Handelssystem (MetaTrader oder Börse) vergeben. Mit der Geschäftsnummer ist nicht die Seriennummer des Geschäfts gemeint, sondern genau das Ticket, das von der FunktionHistoryDealGetTicket zurückgegeben wird. Berücksichtigen Sie dies also und ändern Sie Ihr Beispiel.
 
Alexandr Andreev:

Noch einmal: Stellen Sie sich vor, dass Sie statt eines Strings eine Klasse verwenden, um ein dynamisches Array von Diagrammen zu speichern - und Sie glauben, das sei schnell?

Ich kenne das Innenleben der String-Funktionen nicht, aber Messungen der Funktionsgeschwindigkeit zeigen, dass es weniger als 100 Mikrosekunden dauert, einen Medjic aus einem String mit Tausenden von Medjics zu finden und zurückzugeben.

Das kommt mir sehr schnell vor. Es ist unwahrscheinlich, dass es schneller geht.

 
Реter Konow:

Denn wir wissen nicht im Voraus, wie viele Trades der EA machen wird. Wir müssen im Voraus Speicher für das Array zuweisen, wissen aber nicht, wie viel.

Deshalb mussten wir eine Lösung finden, die schnell und kurz ist und keinen unnötigen Speicherplatz beansprucht.

Über das Fasten. Messung der Extraktionsgeschwindigkeit aller 24000 Tausend Arzneimittel. Sie werden unangenehm überrascht sein.

 
Реter Konow:

Erledigt:

Ihr Beispiel kann nicht mehr korrigiert werden :)

Was passiert, wenn Sie nicht genügend Reihengröße haben?

Ihr Beispiel könnte 32767 Datensätze (Transaktionen) haben, also versuchen Sie, die letzte geschriebene und gelesene Magik zu vergleichen.


 
Vasiliy Sokolov:
Wieder einmal verstehen Sie nicht, worüber wir reden. Das Handelssystem (MetaTrader oder Börse) vergibt eine Geschäftsnummer. Mit der Geschäftsnummer ist nicht die Seriennummer des Geschäfts gemeint, sondern genau das Ticket, das von der FunktionHistoryDealGetTicket zurückgegeben wird. Ändern Sie also Ihr Beispiel, indem Sie es berücksichtigen.

Das ist kein Problem. Morgen werde ich eine zweite Version erstellen, die mit dem Ticket funktionieren wird.

Diese Version ist auch bequem zu handeln.

 
Vasiliy Sokolov:

Bei der schnellen Zählung. Messen Sie die Abrufgeschwindigkeit aller 24.000.000 Medjits. Sie würden unangenehm überrascht sein.

Nun, zu einem bestimmten Zeitpunkt brauchen wir nur einen Medjic, richtig?

Extrahieren Sie einen Medjack und greifen Sie auf alle Informationen zu einem Auftrag zu.

Warum müssen wir 24.000 Medjiks auf einmal herausholen?

 

Was zum Teufel mache ich hier!? Mit wem verschwende ich meine Zeit? Ich gehe besser und trinke etwas Stärkeres.

p.s. Ach ja, Sie haben noch einen Fehler. Wenn MathRand beim dritten Aufruf z.B. die Zahl 1000 zurückgibt und _3_1000_ schreibt, welche Art von Medjic wird dann für ein Geschäft mit der Ordnungszahl 1000 gefunden?
 
Yury Kulikov:

Ihr Beispiel kann jetzt nicht mehr korrigiert werden :)

Was passiert, wenn Sie nicht genügend Reihengröße haben?

Ihr Beispiel kann 32767 Datensätze (Transaktionen) haben, also versuchen Sie, die letzte geschriebene und gelesene Magik zu vergleichen.


Danke für den Hinweis auf die Begrenzung der Zeilenlänge.

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

 
Реter Konow:

Ich kenne die interne Implementierung der String-Funktionen nicht, aber eine Messung der Funktionslaufzeit zeigt, dass es weniger als 100 Mikrosekunden dauert, einen Medjic aus einer Gesamtzeichenkette mit Tausenden von Medjics zu finden und zurückzugeben.

Ich denke, es ist sehr schnell. Ich glaube nicht, dass es noch schneller gehen könnte.


Nun, kurz gesagt ist eine Zeichenkette aus einem Zeichen 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 nicht hinein, es wird auf den ersten Wert 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 gespart.