![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Ich habe ein unerwartetes Ergebnis erhalten.
Imho sind die Tests nicht vergleichbar.
STRUCT2 hat einen Konstruktor
STRUCT2 hat Zeichenketten
Es gibt keine Dokumentation über Strings, wie sie in MQL implementiert sind, wir habenhttps://www.mql5.com/ru/forum/1111/page2732#comment_16181920 diskutiert.
d.h. in Ihrem Test arbeitet STRUCT2 als Klasse mit einem Konstruktor, der eine "Stringklasse" mit einem Konstruktor hat, der in der Tat mehrmals Speicher für das Objekt zuweist
Ich denke, dass ein solch komplexer Test in mehrere Tests aufgeteilt werden muss - die Zeit der Erstellung von STRUCT1- und STRUCT2-Strukturen und dann die Zeit des Zugriffs auf die Daten. Einige Entwickler haben geschrieben, dass String erst nach dem Zugriff auf String Speicher zugewiesen wird - in Ihrem Beispiel wird String durch eine konstante Zeichenkette initialisiert, so dass es schwer zu sehen ist, wie er initialisiert wird - der Compiler initialisiert (oder weist Speicher zu?) Arrays von Strings möglicherweise nicht vor dem Zugriff auf sie
Ich denke, ein so komplexer Test sollte in mehrere Tests aufgeteilt werden
Ich will mir nicht einmal die Mühe machen. Ich habe einfache Strukturen geschaffen.
Aus welchem Grund der Zugang zum ersten Feld einer einfachen Struktur von ihrer Größe abhängt, ist nicht klar.
Ich will mir nicht einmal die Mühe machen. Ich habe einfache Strukturen geschaffen.
Aus welchem Grund der Zugriff auf das erste Feld einer einfachen Struktur von ihrer Größe abhängt, ist nicht klar.
Es ist besser, diese Frage den Entwicklern im entsprechenden Zweig zu stellen. Mit Testcode. Entweder werden sie es erklären, oder sie werden es in Ordnung bringen, oder sie werden nichts sagen... Nur die dritte Variante wird hier wahrscheinlich funktionieren.
Diese Frage stellt man am besten den Entwicklern in der entsprechenden Branche. Mit dem Testcode. Entweder werden sie es erklären, oder sie werden es in Ordnung bringen, oder sie werden nichts sagen... Hier gibt es wahrscheinlich nur die dritte Möglichkeit.
Mein MT5 hat angefangen, zu viel Profanität zu verursachen. Es gibt kritische Fehler. Das ist Blödsinn.
Ich will mir nicht einmal die Mühe machen. Ich habe einfache Strukturen geschaffen.
jetzt die gleichen Tests STRUCT1 und STRUCT3
Ich verstehe nicht, warum der Zugriff auf das erste Feld einer einfachen Struktur von ihrer Größe abhängt.
Das ist nur ein Ratespiel.
eine andere Möglichkeit ist, darauf zu warten, dass jemand den gleichen Test in C++ durchführt und die Ergebnisse anzeigt. Wenn es einen großen Unterschied gibt, bedeutet das, dass die Speicherzuweisung in MQL schlecht implementiert ist
wenn die Tests 1 und 2 in etwa gleich sind, ist es Windows, das den Speicher auf diese Weise zuweist
Mein MT5 hat angefangen, zu viel Profanität zu verursachen. Es gibt kritische Fehler. Das ist Blödsinn.
Es ist ratsam, alle Fehler zu melden. Kritisch und nicht kritisch. Emotionslos, natürlich :)
wenn die Tests 1 und 2 ungefähr gleich sind, dann ist das die Art und Weise, wie Windows den Speicher zuweist
den letzten Test 2 Mal durchgeführt
Terminal MetaTrader 5 x64 build 2470 gestartet für MetaQuotes Software Corp.
2020.05.30 17:01:27.996 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 53: ArrayResize(Array1,Amount)] = 1 ms.
2020.05.30 17:01:27.996 tst_f (EURUSD,H1) 50000000
2020.05.30 17:01:28.002 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 54: ArrayResize(Array3,Amount)] = 6 ms.
2020.05.30 17:01:28.002 tst_f (EURUSD,H1) 50000000
2020.05.30 17:01:28.515 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 56: Func(Array1)] = 512 ms.
2020.05.30 17:01:28.515 tst_f (EURUSD,H1) 1333106752
2020.05.30 17:01:30.734 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 57: Func(Array3)] = 2218 ms.
2020.05.30 17:01:30.734 tst_f (EURUSD,H1) 1333106752
2020.05.30 17:01:41.278 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 53: ArrayResize(Array1,Amount)] = 2 ms.
2020.05.30 17:01:41.278 tst_f (EURUSD,H1) 50000000
2020.05.30 17:01:41.287 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 54: ArrayResize(Array3,Amount)] = 9 ms.
2020.05.30 17:01:41.287 tst_f (EURUSD,H1) 50000000
2020.05.30 17:01:41.840 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 56: Func(Array1)] = 552 ms.
2020.05.30 17:01:41.840 tst_f (EURUSD,H1) 1333106752
2020.05.30 17:01:43.728 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 57: Func(Array3)] = 1888 ms.
2020.05.30 17:01:43.728 tst_f (EURUSD,H1) 1333106752
nicht alle Dateien sind an das Skript angehängt, die letzten Zeilen wurden nicht kompiliert
Ich hatte den Debug.mqh Includer
UPD: auf dem alten Build habe ich den Test durchgeführt
2020.05.30 17:17:27.604 Terminal MetaTrader 5 - build 2361
2020.05.30 17:13:17.046 tst (EURUSD,H1) Alert: Time[tst.mq5 53: ArrayResize(Array1,Amount)] = 1 ms.
2020.05.30 17:13:17.047 tst (EURUSD,H1) 50000000
2020.05.30 17:13:17.053 tst (EURUSD,H1) Alert: Time[tst.mq5 54: ArrayResize(Array3,Amount)] = 6 ms.
2020.05.30 17:13:17.053 tst (EURUSD,H1) 50000000
2020.05.30 17:13:17.563 tst (EURUSD,H1) Alert: Time[tst.mq5 56: Func(Array1)] = 510 ms.
2020.05.30 17:13:17.563 tst (EURUSD,H1) 1333106752
2020.05.30 17:13:19.416 tst (EURUSD,H1) Alert: Time[tst.mq5 57: Func(Array3)] = 1852 ms.
2020.05.30 17:13:19.416 tst (EURUSD,H1) 1333106752
2020.05.30 17:13:28.971 tst (EURUSD,H1) Alert: Time[tst.mq5 53: ArrayResize(Array1,Amount)] = 2 ms.
2020.05.30 17:13:28.971 tst (EURUSD,H1) 50000000
2020.05.30 17:13:28.977 tst (EURUSD,H1) Alert: Time[tst.mq5 54: ArrayResize(Array3,Amount)] = 6 ms.
2020.05.30 17:13:28.977 tst (EURUSD,H1) 50000000
2020.05.30 17:13:29.456 tst (EURUSD,H1) Alert: Time[tst.mq5 56: Func(Array1)] = 478 ms.
2020.05.30 17:13:29.456 tst (EURUSD,H1) 1333106752
2020.05.30 17:13:31.192 tst (EURUSD,H1) Alert: Time[tst.mq5 57: Func(Array3)] = 1735 ms.
2020.05.30 17:13:31.192 tst (EURUSD,H1) 1333106752
Alle Fehler sollten vorzugsweise gemeldet werden. Kritisch oder nicht. Ganz unaufgeregt natürlich :)
Es wurden detaillierte Verzweigungen erstellt.
Versuchen Sie, die Ansagen zu vertauschen. Kommt es nicht darauf an, welche von ihnen oben auf dem Stapel liegt?
2020.05.30 17:33:07.892 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 54: ArrayResize(Array3,Amount)] = 6 ms.
2020.05.30 17:33:07.955 tst_f (EURUSD,H1) 50000000
2020.05.30 17:33:07.957 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 55: ArrayResize(Array1,Amount)] = 1 ms.
2020.05.30 17:33:07.957 tst_f (EURUSD,H1) 50000000
2020.05.30 17:33:09.902 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 58: Func(Array3)] = 1945 ms.
2020.05.30 17:33:09.902 tst_f (EURUSD,H1) 1333106752
2020.05.30 17:33:10.353 tst_f (EURUSD,H1) Alert: Time[tst_f.mq5 59: Func(Array1)] = 450 ms.
2020.05.30 17:33:10.353 tst_f (EURUSD,H1) 1333106752