Errores, fallos, preguntas - página 2880
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
no
si hay secciones de código repetitivas, ¡obtendrá pruebas de optimización!
¿Qué diferencia hay en el tiempo de ejecución de rand()?
Que se ejecute 2/3 del tiempo de la prueba, lo principal es que el tiempo de rand() sea constante
Su código MQL utilizará las funciones MQL del sistema, ¿verdad? - ¿qué sentido tiene probar un código perfecto?
)) la diferencia de velocidad podría ser 4 veces a favor de uno de los métodos (1 a 4), pero como la operación rand es 10 veces más lenta que el resto del código, esta diferencia no sería visible (11 a 14)
)) La diferencia de velocidad podría haber sido 4 veces a favor de uno de los métodos (1 a 4), pero como la operación era 10 veces más larga que el resto del código, esta diferencia no habría sido visible (11 a 14)
No, no podría.
la diferencia es inmediatamente visible
comprobemos algo que los desarrolladores anunciaron en las innovaciones, a menudo escriben que el tiempo de acceso a las series de tiempo para alguna función ha sido optimizado = no se comprueba durante mucho tiempo
2020.10.16 02:11:20.671 SpeedTst (EURUSD,H1) tst 1 : : loops=10000000 ms=353174
2020.10.16 02:11:21.967 SpeedTst (EURUSD,H1) tst 2 : : loops=10000000 ms=1296043
2020.10.16 02:11:21.967 SpeedTst (EURUSD,H1) 11304533.15558525 : 11303930.69247558
2020.10.16 02:11:44.012 SpeedTst (EURUSD,H1) tst 1 : : loops=10000000 ms=359757
2020.10.16 02:11:45.369 SpeedTst (EURUSD,H1) tst 2 : : loops=10000000 ms=1357325
2020.10.16 02:11:45.369 SpeedTst (EURUSD,H1) 11304350.05612442 : 11304321.21848488
no es crítico en absoluto
el tiempo de ejecución de rand() es constante, lo más probable es que sea una función común de C++, busca en google "rand c++ source code"
debes inicializarlo, pero si lo inicializas con constantes puedes encontrarte con la optimización
en general, no entiendo la aversión a rand()
una opción es inicializar con algo como esto:
sería rápido.
corrió su script, imho no es correcto.
El tiempo principal es cargar el código en la caché y luego en el procesador
y añadir la discreción del temporizador del sistema
tenemos... casi un número al azar.
hay que probarlo durante mucho tiempo, unas 100500 veces, en mi opinión
rand() silencia el resultado.
En mi ordenador, una iteración del bucle tarda aproximadamente 1,5 nanosegundos.
Con dos rand(), una iteración tarda el doble, hasta casi 3 nanosegundos. Debes darte cuenta de que en esta iteración desaparecerán dos accesos a un elemento de un array grande, lo que también es bastante caro.
Significa que aproximadamente 2/3 de todo el tiempo de iteración se gasta en dos rands(). Por supuesto, me emocioné un poco con lo de "por un orden de magnitud" ))
No entiendo cómo se puede encontrar una optimización cuando un array preparado de antemano se llena de números aleatorios.
Ya se ha discutido el rendimiento de rand() una vez. Incluso he intentado escribir una función similar yo mismo.https://www.mql5.com/ru/forum/170952/page137#comment_12010041
resultado
Creo que la conclusión es que casi no hay diferencia si se utiliza la unión o el desplazamiento binario.
Yo uso ambos métodos en mi biblioteca de iCanvas para trabajar con el color.
Lo recuerdo, yo también he estado haciendo pruebas de rendimiento y he llegado a la conclusión de que casi no hay diferencia. Pero el código con unión es más legible.
Debo admitir que me decepcionó porque esperaba obtener una ganancia de rendimiento notable con la unión.
No entiendo cómo se puede encontrar una optimización cuando un array preparado de antemano se llena de números aleatorios.
Te he dado 2 enlaces en el hubr de arriba, el primer artículo muestra bien cómo se ve un bucle normal después de la compilación.
No estoy diciendo que necesariamente se deba llegar a la optimización en tiempo de ejecución, pero imho, si la matriz no cambia, que es esencialmente un espacio de memoria constante con un tamaño constante para el bucle, no es un hecho que la optimización puede no aparecer en algún tipo de procesador, y la optimización puede esperarse tanto del compilador como del procesador con la caché
Creo que la conclusión es que no hay casi ninguna diferencia entre la unión y el cambio binario.
Te he dado 2 enlaces en el hbr arriba, el primer artículo muestra bien cómo se ve un bucle normal después de la compilación
No estoy diciendo que usted debe llegar a la optimización en tiempo de ejecución, pero imho, si la matriz no cambia, que es esencialmente un espacio de memoria constante con un tamaño constante para el bucle, no es seguro que ninguna optimización aparecerá
A juzgar por los resultados, no hay señales de optimización
Los resultados no dan ninguna impresión de optimización
sí
El argumento no es sobre un código específico
pero en la metodología de las pruebas, sigo ciñéndome a lo que pruebo de forma óptima, y rand() aunque introduce distorsiones, pero es un coeficiente lineal, no proporcional, es decir, la precisión no es muy importante si no hay una diferencia de velocidad inferior al 5%, imho
Hola a todos.
Tengo una pregunta, tal vez para los desarrolladores de MQL5? Tal vez alguien más sabe... ¿Hay planes para integrar el compilador/editor de código ME con algunos entornos de desarrollo populares como IDEA o Visual Studio? El Meta Editor es un gran dolor para mí. No hay colapso de bloques, no hay plantillas de auto-sustitución (por ejemplo, cuando empiezas a escribir for(...) inmediatamente te ofrece sustituir un patrón de bucle y muchas otras cosas), no hay resaltado de varias partes importantes del código. Y así sucesivamente. No digo que los robots modernos sean complicados, se trata de grandes proyectos y hay exigencias mucho más serias para la gestión del código y la capacidad de desarrollo del equipo.
Ya nadie escribe sus propios editores y compiladores: todos renuncian a ellos y se pasan a las soluciones ya hechas de Microsoft, JetBrains y otros. Todos los editores modernos cuentan con sistemas de plugins personalizables que permiten añadirles lo que se quiera. En principio, la tarea no es difícil.
Estimados señores, ¿hay alguien que pueda darme una respuesta a esta situación que no entiendo?
Y deberías intimidar aún más a los programadores. Entonces, seguro que recibirás ayuda.