Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
wenn Sie solche Klassen schreiben:
Nach Ihrer Recherche zu urteilen, wird die Klasse B langsamer ausgeführt, wenn Sie häufig Strukturfelder in Berechnungen verwenden?
Wir sprachen also über die Zeit, die für das Durchlaufen eines Arrays von Objekten benötigt wird)))
Nach Ihrem Beispiel wird es das gleiche in Plus sein, aber in mql gibt es eine Nuance, es gibt zwei implizite Felder, die zuerst gehen, so, Datenfeld wird durch Verschiebung, d.h. zusätzliche Berechnungen während der Dereferenzierung angegangen werden.
Wir sprachen also über die Zeit, die für die Durchquerung des Arrays von Objekten benötigt wird)))
Nach Ihrem Beispiel wird es das gleiche in Plus sein, aber in mql gibt es eine Nuance, es gibt zwei implizite Felder, die zuerst gehen, so, Datenfeld wird durch Verschiebung, d.h. zusätzliche Berechnungen während der Dereferenzierung angegangen werden.
Vielen Dank, das ist sehr hilfreich!
Wir sprachen also über die Zeit, die für die Durchquerung des Arrays von Objekten benötigt wird)))
Nach Ihrem Beispiel wird es das gleiche in Plus sein, aber in mql gibt es eine Nuance: es gibt zwei implizite Felder, die zuerst gehen, so Datenfeld wird an einem Offset zugegriffen werden, d.h. zusätzliche Dereferenzierung Berechnungen durchgeführt werden.
Also keine Mystik - die Gesetze der Physik in Aktion.
Das passt nicht zu den "Gesetzen der Physik".
Dies ist ein paradoxes Ergebnis. Komplexere Berechnungen werden 1,5 Mal schneller durchgeführt und sind nicht von der Größe abhängig.
Wir sprachen also über die Zeit für die Durchquerung des Objektarrays)))
Nach Ihrem Beispiel wird es das gleiche in Plus sein, aber es gibt eine Feinheit in mql: es gibt zwei implizite Felder, die zuerst gehen, so Datenfeld wird an einem Offset zugegriffen werden, d.h. zusätzliche Dereferenzierung Berechnungen durchgeführt werden.
Danke an Vladimir für die Assembler-Studie.
Und wie Alexey andeutet, wird der Overhead durch Klassen erzeugt.
Daraus können wir schließen, dass es besser ist, Code im prozeduralen Stil zu schreiben, wenn man auf Klassen verzichten kann.
Das heißt, wenn die Aufgabe keine Geschwindigkeit erfordert, können Sie sie in eine Klasse verpacken, aber wenn Sie zum Beispiel mit Ticks zu tun haben, sollten Sie sie besser direkt ohne Wrapper verwenden.
Im Prinzip ist dies der Ansatz, den ich verfolgte, und oft ein Beispiel für eine Klasse zu finden, zerlege ich seine Methoden in prozeduralen Ansatz.
Vielen Dank, Vladimir, für die Montagestudie.
Und wie Alexey vorschlägt, schafft der Overhead Klassen.
Daraus können wir schließen, dass es besser ist, Code im prozeduralen Stil zu schreiben, wenn wir auf Klassen verzichten können.
Das heißt, wenn die Aufgabe keine Schnelligkeit erfordert, kann man sie in eine Klasse verpacken, aber wenn man zum Beispiel mit Ticks zu tun hat, sollte man besser direkt ohne Wrapper schreiben.
Im Prinzip ist das der Ansatz, den ich verfolge, und oft, wenn ich ein Beispiel für eine Klasse finde, zerlege ich ihre Methoden mit einem prozeduralen Ansatz.
Es gibt einen Troll im Forum...
Früher habe ich nicht verstanden, warum manche Nutzer nach der Ignorierfunktion fragen, ach, wie sie jetzt fehlt...
Forum zum Thema Handel, automatisierte Handelssysteme und Strategietests
OOP-Fragen in MQL5
fxsaber, 2020.05.30 14:06
Ich habe keine Ahnung, was ich damit anfangen soll. Ich habe einfache Strukturen geschaffen.
Ich bin mir nicht sicher, warum der Zugriff auf das erste Feld einer einfachen Struktur von ihrer Größe abhängt.
Bei Strukturen mit einer Größe von 20 und 84 Byte sind dies 0,93 GB bzw. 3,91 GB an Daten.
Und im Rahmen Ihrer Berechnung geht vermutlich all dieser Speicher durch den Cache des Prozessors.
Und eine sehr logische Erklärung für diese Ergebnisse wäre, dass 0,93 GB Daten viermal schneller aus dem Speicher in den CPU-Cache heruntergeladen werden als die 3,91 GB an Daten.
Was ist mit den Ergebnissen des C++-Tests?
Denn ich habe Assembler-Code gesehen, aber keine Testergebnisse, oder habe ich schlecht geschaut?
Es gibt einen Troll im Forum...
Früher habe ich nicht verstanden, warum manche Nutzer nach der Ignorierfunktion fragen, ach, wie sie jetzt fehlt...
Sie sollten sich um sich selbst kümmern, nicht um andere.
Nicht Sie und nicht für Sie war die Antwort.
Im Stillen ignorieren ))
Bei Strukturen von 20 bzw. 84 Byte sind das 0,93 GB bzw. 3,91 GB an Daten.
Und als Teil Ihrer Berechnung wird vermutlich der gesamte Speicher durch den Cache des Prozessors geleitet.
Und eine sehr logische Erklärung für diese Ergebnisse wäre, dass 0,93 GB Daten viermal schneller aus dem Speicher in den CPU-Cache heruntergeladen werden als die 3,91 GB an Daten.
Was ist mit den Ergebnissen des C++-Tests?
Denn ich habe Assembler-Code gesehen, aber keine Testergebnisse, oder habe ich schlecht geschaut?
Vielen Dank, Vladimir, für die Montagestudie.
Und wie Alexey vorschlägt, schafft der Overhead Klassen.
Daraus können wir schließen, dass es besser ist, Code im prozeduralen Stil zu schreiben, wenn wir auf Klassen verzichten können.
Das heißt, wenn die Aufgabe keine Schnelligkeit erfordert, kann man sie in eine Klasse verpacken, aber wenn man zum Beispiel mit Ticks zu tun hat, sollte man besser direkt ohne Wrapper schreiben.
Im Prinzip ist dies der Ansatz, den ich verfolge, und oft, wenn ich ein Beispiel für eine Klasse finde, zerlege ich ihre Methoden im prozeduralen Stil.
Sie können eine Struktur anstelle einer Klasse verwenden, das geht auch.