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
esto se llama "loop unrolling" y lo hace el compilador sin ningún tipo de OO y plantillas (al menos así debería ser).
Si miras en el código intermedio (ensamblador), sólo hay operaciones N consecutivas en lugar de un bucle.
¿Y puede decirnos qué ocurre cuando se llama a una función de forma recursiva?
¿Puede decirme qué ocurre cuando se llama a una función de forma recursiva?
no hay ninguna llamada recursiva a las funciones de destino :-)
En el ejemplo anterior N:=const, la recursión se produce sólo cuando el código se genera a partir de una plantilla y ésta se adapta. En el enlace, un giro inteligente es colapsar el ciclo const en la recursión de la plantilla y llamarlo una palabra inteligente
si las macros tuvieran bucles se escribiría así
#for x=0, x<N, x++
print("x=%d",x);
#endfor
y después del macroprocesador se desdoblaría en una secuencia de N príncipes. (lo que realmente ocurrió, sólo a través de las clases de plantillas)
Es decir, el truco sólo funciona si se conoce N en tiempo de compilación
y no hay ninguna llamada recursiva a las funciones de destino :-)
En el ejemplo que se da en el enlace N:=const, la recursividad es sólo en la generación de código a partir de una plantilla y ésta está adaptada. En el enlace, un giro inteligente es colapsar el ciclo const en la recursión de la plantilla y llamarlo una palabra inteligente
si las macros tuvieran bucles se escribiría así
#for x=0, x<N, x++
print("x=%d",x);
#endfor
y después del macroprocesador se desdoblaría en una secuencia de N príncipes. (lo que realmente ocurrió, sólo a través de las clases de plantillas)
Así que el truco sólo funciona si N se conoce en tiempo de compilación
No te lo vas a creer, pero sé cómo funcionan las plantillas y qué N hay, y cuál es el resultado. Y mi pregunta sobre la llamada a la función recursiva era exactamente sobre la llamada a la función recursiva, no sobre cómo allí?
No te lo vas a creer, pero sé cómo funcionan las plantillas y cuál es la N y cuál es el resultado. Y mi pregunta sobre la llamada a la función recursiva era exactamente sobre la llamada a la función recursiva, no sobre cómo allí?
¿es como un examen de "reto"? :-) De alguna manera pensé que este ejemplo se estaba discutiendo... Me equivoqué :-)
Si el compilador puede convertir la recursión en una cola (o es explícitamente así, o se le dijo que lo hiciera), entonces físicamente no habrá recursión - se hará un bucle (vuelta atrás) y cada iteración "pisoteará" el marco de pila anterior.
¿es una especie de examen de "desafío"? :-) De alguna manera pensé que este ejemplo se estaba discutiendo... me equivoqué :-)
Si el compilador puede convertir la recursión en una recursión de cola (o es explícitamente así o se le ha dicho que lo haga), entonces físicamente no habrá recursión - se hará un bucle (vuelta atrás) y cada iteración "pisoteará" el marco de pila anterior.
¿Qué tiene que ver esto con la debilidad? Sólo una pregunta. Bueno, no, así que no.
No quiero ni molestarme. Hice estructuras simples.
No entiendo por qué el acceso al primer campo de una estructura simple depende de su tamaño.
Huh. Es trivial: el número de bits para la multiplicación es más)))) Asegúrese de que el número de bits en la representación binaria del tamaño de la estructura era el mismo)) Estúpido procesador, así como un hombre, más tiempo para multiplicar 1111*101 que 1111*10)
No voy a comprobarlo, hay muchas otras tareas. Pero me cuesta creerlo.
En ME, trabajo con mqh, presiono ALT+N - la vista de árbol en la ventana del Navegador muestra la ubicación del archivo.
Ahora quiero incluirlo en un archivo mq5 abierto. Arrastro mqh del árbol a mq5, pero no se genera ninguna línea de inclusión apropiada.
No voy a comprobarlo, hay muchas otras tareas. Pero me cuesta creerlo.
Es para una estructura pequeña.
Esto es para uno grande.
VS2019, Debug x64, en release los inline, pero la velocidad es la misma.
La única diferencia está en las instrucciones imul, el tercer operando, en dos lugares. La instrucción es sólo eso, calcular el desplazamiento en el array, y el tercer operando esel tamaño de la estructura en bytes.
Por lo tanto, no hay misticismo: las leyes de la física en acción.
Por lo tanto, no hay misticismo - las leyes de la física están en acción.
si escribe tales clases:
A juzgar por tu investigación, la clase B será más lenta de ejecutar si utilizas frecuentemente campos de estructura en los cálculos?