Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Obtuve un resultado inesperado.
en mi opinión, las pruebas no son comparables
STRUCT2 tiene un constructor
STRUCT2 tiene cadenas
no hay documentación sobre las cadenas tal y como se implementan en MQL, hablamos dehttps://www.mql5.com/ru/forum/1111/page2732#comment_16181920
es decir, en su prueba, STRUCT2 funciona como una clase con un constructor, que tiene una "clase de cadena" con un constructor, que en efecto está asignando memoria para el objeto varias veces
Creo que una prueba tan compleja debe dividirse en varias pruebas - el tiempo de creación de las estructuras STRUCT1 y STRUCT2 y luego el tiempo de acceso a los datos. Algunos desarrolladores escribieron que la cadena se asigna a la memoria sólo después de acceder a la cadena - en su ejemplo, la cadena se inicializa por una cadena constante, por lo que es difícil ver cómo se inicializa - el compilador puede no inicializar (o asignar memoria?) matrices de cadenas antes de acceder a ellos
Creo que una prueba tan compleja debería dividirse en varias pruebas
No quiero ni molestarme. Hice estructuras simples.
No está claro por qué razón el acceso al primer campo de una estructura simple depende de su tamaño.
No quiero ni molestarme. Hice estructuras simples.
No está claro por qué razón el acceso al primer campo de una estructura simple depende de su tamaño.
Es mejor hacer esta pregunta a los desarrolladores de la rama correspondiente. Con código de prueba. O lo explican, o lo arreglan, o no dicen nada... Aquí probablemente sólo funcione la tercera variante.
Esta es una pregunta que es mejor plantear a los desarrolladores de la rama correspondiente. Con el código de prueba. O lo explican, o lo arreglan, o no dicen nada... Aquí está probablemente sólo la tercera opción.
Mi MT5 ha empezado a provocar demasiadas bromas. Hay fallos críticos. Esto es una mierda.
No quiero ni molestarme. He hecho estructuras sencillas.
ahora las mismas pruebas STRUCT1 y STRUCT3
No entiendo por qué el acceso al primer campo de una estructura simple depende de su tamaño.
Esto es sólo un juego de adivinanzas.
otra forma es esperar a que alguien haga la misma prueba en C++ y muestre los resultados. Si hay una gran diferencia, significa que la asignación de memoria en MQL está mal implementada
si las pruebas 1 y 2 son casi iguales, es Windows el que está asignando la memoria de esta manera
Mi MT5 ha empezado a provocar demasiadas bromas. Hay fallos críticos. Esto es una mierda.
Es aconsejable informar de todos los errores. Crítico y no. Sin emociones, por supuesto :)
si las pruebas 1 y 2 son más o menos iguales, entonces es la forma en que Windows está asignando la memoria
realizó la última prueba 2 veces en
Terminal MetaTrader 5 x64 build 2470 iniciado para MetaQuotes Software Corp.
2020.05.30 17:01:27.996 tst_f (EURUSD,H1) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[tst_f.mq5 57: Func(Array3)] = 1888 ms.
2020.05.30 17:01:43.728 tst_f (EURUSD,H1) 1333106752
no todos los archivos se adjuntan a la secuencia de comandos, las últimas líneas no compilar
Tuve la inclusión de Debug.mqh
UPD: en la versión antigua hice la prueba
2020.05.30 17:17:27.604 Terminal MetaTrader 5 - build 2361
2020.05.30 17:13:17.046 tst (EURUSD,H1) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[tst.mq5 57: Func(Array3)] = 1735 ms.
2020.05.30 17:13:31.192 tst (EURUSD,H1) 1333106752
Es preferible informar de todos los errores. Crítico o no. De forma impasible, por supuesto :)
Se han creado ramas detalladas.
Prueba a intercambiar sus anuncios. ¿No depende de cuál esté en la parte superior de la pila?
2020.05.30 17:33:07.892 tst_f (EURUSD,H1) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[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) Alerta: Tiempo[tst_f.mq5 59: Func(Array1)] = 450 ms.
2020.05.30 17:33:10.353 tst_f (EURUSD,H1) 1333106752