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 has mezclado nada en tu código, ¿quién va a cambiar el valor por ti?
como en la primera versión.
Sí, me perdí ese punto. Corregido mi post.
Ahí hay un resultado aleatorio. La compilación despliega el acceso a una celda de memoria con un valor de tamaño de matriz, y el tamaño de la matriz se obtendrá y se colocará en la celda de memoria por adelantado, cuando se forme la matriz, incluso si la matriz es dinámica, y las celdas con un tamaño de matriz y con un valor variable tendrán el mismo tiempo de acceso.
Y a juzgar por la frase que hacen los compiladores en el curso de informática de 3-4 años... en general, espero que un nivel de personal suficientemente necesario no me ponga muy nervioso en el entorno de la ACM)
Créanme que el estudiante promedio por lo general FIVT es sólo cero con más), ya que hay cero experiencia, y el conocimiento sin experiencia rápidamente va a ninguna parte (olvidado), y sus ejemplos son muy extraños, se tardará años antes de que el estudiante entiende dónde y cómo se puede utilizar. Esto es si lo comparas con un programador experimentado.
Créanme, el estudiante promedio de FIVT suele ser un cero más), porque hay cero experiencia, y el conocimiento sin experiencia rápidamente no va a ninguna parte (se olvida), y sus ejemplos son muy extraños, pasarán años antes de que el estudiante entienda dónde y cómo se pueden utilizar. Esto es si lo comparas con un programador experimentado.
Es comprensible. No entiendo por qué hay que enseñar a hacer un compilador. Está claro que una lengua es una clase, pero no todos los pájaros pueden volar a priori. Bueno, como ya he mencionado anteriormente, Errores, Bugs, Preguntas también son relevantes para la cuestión de la optimización de la compilación sobre la marcha.
El tema es sobre definiciones, no sobre bucles ))
Pero sigo sin entender, si tiene sentido definir código, por ejemplo, funciones definidas por el usuario.
Con la esperanza de que el código defectuoso se ejecute más rápido en el archivo ejecutable.
¿O es un malentendido? Porque la sustitución es sólo una acción de precompilación, y sólo tiene sentido para acelerar la construcción.
El tema es sobre definiciones, no sobre bucles ))
Pero sigo sin entender, si tiene sentido definir código, por ejemplo, funciones definidas por el usuario.
Con la esperanza de que el código defectuoso se ejecute más rápido en el archivo ejecutable.
¿O es un malentendido? Porque la sustitución es sólo una acción de precompilación, y es lógico que acelere la compilación.
Acabo de mostrar un ejemplo en el que se utilizan 3 funciones externas... contra su forma desplegada. Así que no habrá aceleración.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
Pregunta para los expertos en #define
Alexandr Andreev, 2020.11.02 19:49
500p pregunta (sin comprobar) qué camino es más rápido. ver cuántas funciones externas se llaman en el método superior
Acabo de mostrar un ejemplo en el que se utilizan 3 funciones externas... contra su forma desplegada. Así que no habrá aceleración.
Ya veo. Entonces, hola a fxsaber. Un fanático de la desfinanciación de todo.
Demuestra que me equivoco)
porque en mi prueba son iguales por alguna razón.
En cuanto a ArraySize() y la variable. Aún así, volveré a esta cuestión.
Esto es lo que he cambiado en la prueba. El bucle cuenta el número de PI.
En el primer ejemplo, la condición del bucle utiliza ArraySize().
En el segundo ejemplo, se utiliza la variable num_steps.
Hay una diferencia.
Función ArraySize()
Tres ejecuciones del guión.
Variable número_pasos.
Tres ejecuciones del guión.
Ya veo. Entonces, hola a fxsaber. Un fanático de definir todo en una fila.
En cuanto a ArraySize() y la variable. De todos modos, volveré a esta pregunta.
Aquí está la prueba que he modificado. El bucle cuenta el número de PI.
En el primer ejemplo, la condición del bucle utilizaArraySize().
En el segundo ejemplo, se utilizala variable num_steps.
Hay una diferencia.
Función ArraySize()
Tres ejecuciones del guión.
Variable número_pasos.
Tres ejecuciones del guión.
No hay una diferencia clara en estos cálculos. Puse todo esto en un código y los resultados son diferentes, hay uno donde la primera variante gana
)) cualquier matriz en µl tiene una variable que es responsable del tamaño actual de la matriz, por lo que en la mayoría de los lenguajes
La función ArraySize le dice al compilador que devuelva el valor de esta variable, es decir, sustituye esta variable en lugar de esta función. Como los arrays µl no pueden ser referenciados, el puntero es explícitamente a esta variable, justo a la dirección de la croqueta en memoria. Técnicamente, todas estas pruebas son un intento de comparar dos variables regulares. Esta es la propiedad de las funciones de desdoblamiento, en mi ejemplo 4 funciones perdonan 0 funciones, 3 de las cuales están justo en el cuerpo del bucle, es decir, hay una comparación de 40000000000 llamadas a funciones frente a ninguna. Y vemos una diferencia implícita que es demasiado pequeña para notarla - porque está poniendo código en el archivo ejecutable.... estamos comparando lo mismo.
Y todos estos cálculos, cuanto más complicados son, menos sentido tienen.
Es más fácil poner un ejemplo en el que en un caso llamamos a cien funciones, funciones dentro de funciones... Y en el otro caso, todo esto en forma expandida - y no habrá ninguna diferencia. Ya que ArraySize(mas)== mas[].tamaño
Aunque por alguna razón el ejemplo de pi tiene una diferencia ..... por la frecuencia de rebasamiento, (redacción) aunque esto es puramente aleatorio rebasamiento
y es igual a 1ms por 1.000 millones de salidas, aunque no se prueba explícitamente comparando variable con variable y la dispersión se hace aún mayor)
No hay una diferencia clara con estos cálculos. Ponerlo todo en un código, y los resultados son diferentes, hay algunos en los que gana la primera opción
)) Cada matriz en µl tiene una variable responsable del tamaño actual de la matriz, por lo que en la mayoría de los lenguajes
La función ArraySize le dice al compilador que devuelva el valor de esta variable, es decir, sustituye esta variable en lugar de esta función. Como las matrices µl no pueden ser referenciadas, el puntero es explícitamente a esta variable, justo a la dirección de la croqueta en memoria. Técnicamente, todas estas pruebas son un intento de comparar dos variables regulares. Esta es la propiedad de las funciones de desdoblamiento, en mi ejemplo 4 funciones perdonan 0 funciones, 3 de las cuales están justo en el cuerpo del bucle, es decir, hay una comparación de 40000000000 llamadas a funciones frente a ninguna. Y vemos una diferencia implícita que es demasiado pequeña para notarla - porque está poniendo código en el archivo ejecutable.... estamos comparando lo mismo.
Y todos estos cálculos, cuanto más complicados son, menos sentido tienen.
Es más fácil poner un ejemplo en el que en un caso llamamos a cien funciones, funciones dentro de funciones... Y en el otro caso, todo esto en forma expandida - y no habrá ninguna diferencia. Ya que ArraySize(mas)== mas[].tamaño
No importa lo que se ejecute en el cuerpo del bucle. Esto es sólo una carga para la prueba.
Los ejemplos comparan la referencia a una función o variable en la condición del bucle.
No soy ensamblador, pero creo que no es lo mismo desde el punto de vista de las instrucciones del ensamblador.
Y si además está envuelto en una clase, ciertamente no es lo mismo.
Una función tiene una instrucción extra para recuperar un valor de una celda de memoria, es decir, la función llama a la celda de memoria para obtener un valor y sólo entonces devuelve el resultado.
Una variable ya tiene este valor, la variable no hace referencia a ningún sitio, devuelve el resultado inmediatamente.
No importa lo que se realice en el cuerpo del ciclo. Es sólo una carga para la prueba.
Los ejemplos comparan la referencia a una función o variable en la condición del bucle.
No soy experto en ensamblador, pero creo que desde el punto de vista de las instrucciones de ensamblador, no es lo mismo.
Y si además está envuelto en una clase, ciertamente no es lo mismo.
Una función tiene una instrucción adicional para recuperar un valor de una celda de memoria, es decir, la función llama a la celda de memoria para obtener un valor y sólo entonces devuelve el resultado.
Una variable ya tiene ese valor, la variable no hace referencia a ningún sitio, devuelve el resultado inmediatamente.
) Bueno, no es así como funciona)
Casi cada carrera el líder cambia
la más larga es la división)))