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
Dame el código completo de tu prueba
aquí tienes, pero no veo el sentido de volver a hablar de rand(), alternativamente sustitúyelo por alguna variable inc++
Sí... Tengo un error en mi código, quiero que salga el tiempo en segundos, pero me sale 10 veces más, lo he dividido correctamente por 1 000 000, ¿quién me puede decir cuál es la razón?
aquí tienes, pero no veo el punto de discutir rand() de nuevo, alternativamente reemplazarlo con alguna variable inc++
Sí... Algún tipo de error en mi código, quiero que salga el tiempo en segundos, pero me sale 10 veces más, lo he dividido correctamente por 1 000 000, ¿quién me puede decir cuál es la razón?
BOMBA.
aquí está su código que demuestra que es al revés.
BOMBA
Aquí está su código que demuestra lo contrario.
Acabo de cambiar los cheques.
Acabo de cambiar los cheques
2020.11.02 21:01:38.590 22222 (USDCHF,H1) cnt: loops = 1000 seconds=821.7159
2020.11.02 21:01:52.353 22222 (USDCHF,H1) ArraySize: loops = 1000 seconds=807.9415
¿Qué prueba? ))
Usted mismo ha mostrado las dos variaciones de la condición de ciclo.
Igor también dio el código anterior.
Sólo hay que medir el rendimiento del bucle con tamaño variable y con ArraySize() en la condición del bucle.
Demuestra que me equivoco)
porque en mi prueba son iguales
Acabo de cambiar los cheques.
Sí, tienes que hacer eso.
Esta vez me dio mucha pereza.
Envolviendo las pruebas en un bucle externo, lo conseguí así:
2020.11.02 22:06:43.557 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 seconds=117.4626
2020.11.02 22:06:58.328 SpeedTst (EURUSD,H1) cnt: loops = 1000 seconds=102.7337
2020.11.02 22:07:13.075 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 seconds=87.9782
2020.11.02 22:07:27.850 SpeedTst (EURUSD,H1) cnt: loops = 1000 seconds=73.2461
2020.11.02 22:07:42.598 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 seconds=58.4859
2020.11.02 22:07:57.380 SpeedTst (EURUSD,H1) cnt: loops = 1000 seconds=43.7522
2020.11.02 22:08:12.891 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 seconds=28.9861
2020.11.02 22:08:28.874 SpeedTst (EURUSD,H1) cnt: loops = 1000 seconds=13.4910
Sí, hay que hacerlo.
Esta vez me dio mucha pereza.
Envolviendo las pruebas en un bucle externo, obtuve esto
2020.11.02 22:06:43.557 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 seconds=117.4626
2020.11.02 22:06:58.328 SpeedTst (EURUSD,H1) cnt: loops = 1000 seconds=102.7337
2020.11.02 22:07:13.075 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 seconds=87.9782
2020.11.02 22:07:27.850 SpeedTst (EURUSD,H1) cnt: loops = 1000 seconds=73.2461
2020.11.02 22:07:42.598 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 seconds=58.4859
2020.11.02 22:07:57.380 SpeedTst (EURUSD,H1) cnt: loops = 1000 seconds=43.7522
2020.11.02 22:08:12.891 SpeedTst (EURUSD,H1) ArraySize: loops = 1000 seconds=28.9861
2020.11.02 22:08:28.874 SpeedTst (EURUSD,H1) cnt: loops = 1000 seconds=13.4910
Ahora cámbialos en el bucle y sorpréndete
Ahora intercámbielos en el bucle y se sorprenderá
No me sorprenderá. Sé que el compilador puede optimizar el código sobre la marcha
pero, en mi opinión, en los bucles anidados, todavía no debería llamar a ArraySize() innecesariamente.
Por supuesto, a veces puede ser inconveniente, así que hago el bucle a través de una variable temporal - su versión № 2
imho, es fiable y se entiende lo que va a pasar
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. Sólo como ejemplo fue ArraySize
El resultado;
for (int i=0; i<ArraySIze(mas); i++) == for (int i=0; i<size; i++)
Pero si añadimos la inicialización de la variable de tamaño a la segunda parte, entonces el primer método se lleva la palma en el tiempo de inicializar esta variable y equipararla con el valor.
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:
entonces el primer método tiene preferencia, para el momento de inicializar esta variable y equipararla con un valor, se nota sólo en las altas repeticiones
no funciona
La optimización en tiempo de ejecución estará a la cabeza
no puedes probar mashidas tan simples sin el profiler, en general, puedes escribir en un bucle, o puedes probar en el tester, la velocidad es importante para ello