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
Si cambia el tamaño de las matrices en el cuerpo del bucle, la optimización sobre la marcha no funciona
así que cambia el código:
)))) simplemente también tiene que cambiar el valor de su variable de tamaño, por lo que el nombrado primer método utilizando ArraySIze beneficiará
Bueno, no puedo decir nada en contra de la IMHO.
En las repeticiones muy grandes, mis victorias se han vuelto aleatorias para el primer y segundo método... Lo más probable es que haya pasado a depender de la caché de la CPU y de la carga general.
Mi pregunta no era sobre el bucle, sino sobre cómo se desarrollaba la función. Es que se usó ArraySize como ejemplo.
Eso es bueno) La perfección de un lenguaje de alto nivel es precisamente cuando una entrada conveniente es tan barata como una entrada no conveniente pero inicialmente barata. Lástima que no siempre es así, y la ayuda con un ayudante para los novatos no siempre en absoluto tampoco..... no habría preguntas)))
Si cambia el tamaño de las matrices en el cuerpo del bucle, la optimización sobre la marcha no funciona
Así que cambia el código:
no funciona
la optimización en tiempo de ejecución está a la cabeza
no puedes probar comandos tan simples de mashin sin un perfilador, o puedes escribir en el bucle, o probar en un probador, la velocidad es importante para ello.
No me refería al bucle sino a cómo el compilador despliega las funciones..... vamos.
Te dejo con ello.
)))) también se le permite cambiar el valor de su variable de tamaño, por lo que el primer método que utiliza ArraySIze ganará
Escribí arriba - un código tan simple no puede ser probado con simples mediciones, hay muchos factores - el código es pequeño - cabrá en la caché del procesador, el código debe ser bien descompuesto en el procesador en micro-comandos paralelos en el pipeline del procesador, es decir, los registros serán cargados rápidamente por la precarga de datos
y tal vez rand() también se almacene en algún lugar
No sé cómo probar sin el depurador - al menos allí se puede ver el tiempo de ejecución de las instrucciones intactas
Entonces demuestre que me equivoco).
Porque en mi prueba por alguna razón son iguales.
Cambié mi puesto.
Me parece que ArraySize ahora es más rápido que la variable cnt.
Antes era al revés. Tal vez el incremento cnt-- está afectando, el cuerpo del bucle es diferente y probablemente algo más debe ser inventado para la carga.
Esto es extraño.
Eluso de ArraySize(arr) en la condición del bucle muestra menos tiempo que el uso de la variable cnt.
Antes era al revés. ¿Tal vez sea un error? No debería ser así.
No has mezclado nada en tu código, ¿quién va a cambiar el valor por ti?
cnt
cambiarlo por ti, como ocurre en la primera variante
Pregunta de 500p (sin comprobar), qué camino es más rápido. ver cuántas funciones externas se llaman en el método superior
como una variante de la prueba - también puede deslizar sólo diferentes arrays en cada prueba - en mi ejemplo arr1,arr2...
es decir, tst1_arr1[],tst1_arr2[] .... y tst2_arr1[],tst2_arr2[]
esta sería una prueba más justa.
estoy fuera, muy distraído - imho, práctico, úsalo
No sé cómo probar sin depurador - al menos puedes ver el tiempo de ejecución de las instrucciones en ciclos de reloj.
Pues sí, no se puede prescindir del depurador. Y en el tiempo del reloj allí...
Esto es extraño.
Eluso de ArraySize(arr) en la condición del bucle muestra menos tiempo que el uso de la variable cnt.
Antes era al revés. ¿Tal vez sea un error? No debería ser así.
Ahí hay un resultado aleatorio. Al compilar, los accesos a una celda de memoria con un valor de tamaño de matriz se desdoblan, mientras que el tamaño de la matriz se recibirá y se pondrá en la celda de memoria de antemano, cuando se forme la matriz, incluso si la matriz es dinámica y las celdas con un tamaño de matriz y el valor de una 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 encuadramiento suficientemente necesario no me ponga muy nervioso en un entorno de ACM)