Obtener el número de decimales de cualquier número (no sólo las comillas) evitando Digits() en MQL4 y MQL5 - página 14
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
¿Puedo pensar en una implementación rápida de la traducción de una matriz de estructuras (longitud múltiplo de sizeof(int)) hacia y desde una matriz int[]?
La aplicación práctica es el intercambio rápido de datos a través de los recursos. Mi variante es demasiado universal, por lo que se ralentiza.
Estas funciones aparecieron en MT5
No existen en MT4 y probablemente no existirán. Por lo tanto, tenemos que resolver el problema con y sin estas funciones (si son útiles).
El resultado será útil para un gran número de usuarios del foro.
He escrito una plantilla muy sencilla para el brainstorming con mi solución a este problema.
Resultado
Resultado
Algo considerablemente más rápido que la segunda opción. Probablemente no hay forma de acelerarlo.
¿unaimplementación rápida de la traducción de una matriz de estructuras (longitud múltiplo de sizeof(int)) a y desde una matriz int[]?
Algo así
Algo así.
¡Bien hecho! Me pondré a buscar el código, gracias.
Parece que ArrayCopy es un verdadero lentorro.
ZY De una carrera a otra, obtengo resultados muy diferentes. Por ejemplo, si cambio el orden de las Pruebas, casi todo se invierte. Aparentemente, necesito una medida de velocidad más objetiva.
ZZZ, ArrayCopy parece ser un poco pesado.
Recuerdo haber medido en alguna tarea local, donde tenía que copiar un pequeño número de elementos. Hasta 16 elementos el bucle for era mucho más rápido que el ArrayCopy, cuando el número de elementos era mayor, el ArrayCopy era más rápido. Por supuesto, la variante más rápida sin bucles en absoluto (como mis funciones en la página anterior)
La forma más rápida es hacerlo sin bucles en absoluto (como mis funciones en la página anterior).
No lo entiendo.
No lo entiendo.
Lo que quiero decir es que for(int i=0; i<5; i++) dst[i]=src[i]; funciona más lento que dst[0]=src[0];dst[1]=src[1];dst[2]=src[2];dst[3]=src[3];dst[4]=src[4];
que es bastante obvio en vista de las operaciones adicionales relacionadas con el control del bucle)
Y CopyArray funciona mucho más rápido que ambos, como he comprobado ahora. Tal vez dependa de la situación, por supuesto.
Sí, esto funcionará mucho más rápido (sustituido en lo posible por ArrayCopy, el resto es lo mismo):
Ya te dije que escribí lo primero que se me ocurrió sin hacer pruebas))
Y CopyArray, tal y como lo he comprobado ahora, funciona mucho más rápido que ambas opciones, parece. Tal vez dependa de la situación, por supuesto.
Si ArrayCopy() se hace según el principio de Cish memmove(),
Creo que la velocidad de ArrayCopy() depende de la velocidad de asignación de la memoria, si la memoria intermedia del buffer está lista para ser copiada, ArrayCopy() se ejecutará muy rápidamente, si la memoria no está asignada, empezará a solicitar al sistema operativo que asigne memoria
puedes probar - hacer una llamada a ArrayCopy() con un volumen de datos grande, preparando así la memoria intermedia para el intercambio, y luego hacer un bucle con ArrayCopy() con un volumen de datos más pequeño para copiar y con la medición de la velocidad