Fehler, Irrtümer, Fragen - Seite 1337

 
Vladimir Pastushak:

Die Entwickler sind nicht humorlos.

Klingt für mich nach einem Download und einer Art "Download"-Baumschwung nach rechts oder links.

Wenn "schwingen", könnte man es auch mit einem Baum vergleichen: "rechts/links" - man hat auch Humor (man verbindet "rechts/links")
 
Artyom Trishkin:
Wenn "schwanken", hätten Sie es mit einem Baum vergleichen können: "rechts/links" - Sie sind auch humorvoll (verschmolzen "rechts/links")

Das "Schwanken" des Bootes ,

Und die Sache mit der (verschmolzenen) rechten/linken Seite ist nicht meine Schuld, sondern die von Firefox.

 
Wenn Sie Dateien in ME kompilieren, die im Ordner Projects liegen, werden die kompilierten Dateien in den entsprechenden Ordnern Experts, Indicators, Scripts erstellt. Wenn ich jedoch mit einem separaten Compiler kompiliere, geschieht dies nicht - die kompilierten Dateien werden im Ordner mit dem Quellcode erstellt. Soll das so sein oder müssen die entsprechenden Tasten verwendet werden?
 

Bei den Zeichen BR-8.15 und BR-10.15 gibt es Störungen, bei den anderen BR-Zeiträumen ist alles in Ordnung.

Build 1150 echte Öffnung win7 x64 max

Videodateien .mp4 im Trailer.

+ im Zeitraum M1 (zum Beispiel)

Wenn Sie auf die Schaltfläche "Auto-Scroll Chart zum Ende mit der Ankunft der neuen Ticks" - das Diagramm wird an den Anfang verschoben

Wenn Sie dann die Taste "ENDE" drücken, bewegt sich das Diagramm für eine Sekunde an das Ende und dann wieder an den Anfang.

Dateien:
br-bag.zip  7609 kb
br-bag2.zip  3720 kb
 
Alexey Navoykov:

Ich hatte vorher nicht viel darauf geachtet, aber jetzt, bei der Arbeit mit großen Arrays von Klassenobjekten, ist mir ein zu großer Speicherverbrauch aufgefallen. Ich habe es mit sizeof() überprüft und eine absolut leere Klasse benötigt 16 Bytes. Und wenn man bedenkt, dass die Klassen hier verwaltet werden, kommen noch einmal 8 Bytes pro Zeiger hinzu. Insgesamt sind es 24 Bytes. Das ist zu teuer.

Ich habe die Dokumentation durchgesehen und gesehen, was ich dort gefunden habe:

Es stellt sich die Frage, warum einfache Klassen (die nicht an der Vererbung beteiligt sind) die virtuelle Funktionstabelle benötigen, da alles über diese Klassen in der Kompilierungsphase bekannt ist.

Es stellt sich heraus, dass die Methoden darin auf die gleiche Weise aufgerufen werden wie virtuelle Methoden, d.h. es gibt eine zusätzliche Umleitung des Zugriffs über die Tabelle. Und wo bleibt die gelobte Compiler-Optimierung? Wie können wir danach einen Vergleich der Leistung mit C++ anstellen?

Die hervorgehobene Annahme ist falsch, nur virtuelle Methoden werden über die Tabelle aufgerufen und meine Aussage gilt nicht nur für den MQL-Compiler.
Außerdem werden in MQL einige virtuelle Aufrufe als normale Funktionsaufrufe und nicht über die Tabelle ausgeführt.
Wie Renat schrieb, haben Klassen in MQL eigentlich immer eine virtuelle Tabelle, die 8 Bytes + 8 Bytes Metainformationen enthält.
 
Vladimir Pastushak:

Die Entwickler sind nicht humorlos.

Klingt für mich nach einem Download und einer Art "Download"-Baumschwung nach rechts oder links.

Danke, korrigiert in "Herunterladen".
 
Ilyas:
Die hervorgehobene Annahme ist falsch, nur virtuelle Methoden werden über die Tabelle aufgerufen und meine Aussage gilt nicht nur für MQL-Compiler.
Außerdem werden in MQL einige virtuelle Aufrufe als normale Funktionsaufrufe durchgeführt, nicht über eine Tabelle.
Wie Renat schrieb, haben Klassen in MQL in der Tat immer eine virtuelle Tabelle, die 8 Bytes + 8 Bytes an Metainformationen enthält.
Wie auch immer, könnten Sie klären, warum eine einfache Klasse, die von niemandem erbt und daher nicht an der Virtualisierung teilnimmt, eine Tabelle benötigt? Renat erwähnte virtuelle Destruktoren, aber in diesem Fall haben wir nichts zu virtualisieren. Da es nur einen Destruktor gibt, kann dieser auch inlined werden, oder? Es bleiben nur 8 Bytes an Metadaten übrig.
 
Alexey Navoykov:
Danke für die Antwort, aber könnten Sie bitte erklären, warum eine einfache Klasse, die von niemandem geerbt wird und daher nicht an der Virtualisierung teilnimmt, eine Tabelle benötigt? Renat erwähnte virtuelle Destruktoren, aber in diesem Fall gibt es nichts zu virtualisieren. Da es nur einen Destruktor gibt, kann dieser auch inlined werden, so dass nur 8 Bytes an Metadaten übrig bleiben.
Wenn eine Klasse nicht vererbt wird, wird ihr Destruktor als normale nicht-virtuelle Funktion aufgerufen und inline geschaltet, wenn er die Inline-Kriterien erfüllt.

Das Laufzeitsystem (MQL-Programmumgebung) geht von der Annahme aus, dass eine Klasse mindestens 16 Byte belegt.
 
Wenn Sie Dateien in ME kompilieren, die im Ordner Projects liegen, werden die kompilierten Dateien in den entsprechenden Ordnern Experts, Indicators, Scripts erstellt. Wenn ich jedoch mit einem separaten Compiler kompiliere, geschieht dies nicht - die kompilierten Dateien werden im Ordner mit dem Quellcode erstellt. Soll das so sein oder müssen die entsprechenden Tasten verwendet werden?
 

Baujahr 854 vin 10 64 x

Wenn beim Testen von EAs mit Visualisierung versucht wird, ein anderes zuvor geöffnetes Fenster als das aktuelle Arbeitsfenster mit dem Test zu schließen, wird der Test unterbrochen ...

Geschlossen über mittlere Maustaste und Kontextmenü ...