Características del lenguaje mql5, sutilezas y técnicas - página 118
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
Por cierto, sobre el cero, FastLog2 no comprueba el cero, lo que le da ventaja. Pero sigue siendo 1,5-2 veces más lento que log2 si se prueba correctamente).
¿Y qué tiene de incorrecto?
Porque incluso su versión de la prueba produce:
Por cierto, sobre el cero, FastLog2 no comprueba el cero, lo que le da ventaja. Pero sigue siendo 1,5-2 veces más lento que log2, si se prueba correctamente).
Por supuesto, deberíamos eliminar la comprobación de cero de log2 o añadir la misma a FastLog2.
La pregunta es realmente sobre la velocidad de la parte computacional. En log2, todo se calcula puramente por desplazamientos y sumas. FastLog2 utiliza los valores de la tabla después de realizar conversiones inteligentes que implican una multiplicación. Este código es muy antiguo, se utilizaba en la época de los coprocesadores matemáticos, la situación puede haber cambiado desde entonces.
Este es el comportamiento estándar de MQL5: las variables estáticas vienen después de las variables globales.
Se puede llegar a tener un lío muy serio por culpa de esto.Este es el comportamiento estándar de MQL5: las variables estáticas comienzan después de las variables globales.
¿Es por eso que cada variable estática de una clase/estructura tiene que ser declarada después de la propia estructura? E incluso sin asignarle ningún valor... ¿Tal vez deberíamos sugerir que el compilador haga todo esto automáticamente?
Esto es esencialmente un error, una secuencia incorrecta de la ejecución del código del programa. En principio, el compilador no debería permitir esto. Deberías gritar a los desarrolladores más a menudo sobre esto.
En C++ el código es procesado por el compilador estrictamente de arriba a abajo, por lo que todo lo de arriba ya está inicializado y no se puede acceder al código de abajo. Por eso todo está claro. Y ya que los desarrolladores introdujeron sus propias reglas aquí, que proporcionen el orden correcto de ejecución del código.
En C++, el código es procesado por el compilador estrictamente de arriba a abajo, por lo que todo lo que está en la parte superior ya está inicializado. Y no se puede acceder a la parte inferior. Por eso todo está claro.
Hay menos flexibilidad.