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
Todo el problema está en el segundo ciclo. Maneja simultáneamente las ramas izquierda y derecha del extremo potencial y, por lo tanto, sólo pasa por (N - 1)/2 barras, pero eso no es suficiente. Las mediciones muestran que el tiempo empleado en buscar un extremo en una progresión aritmética depende del periodo N, lo que es muy, muy malo:
Falta al menos un descanso:
Mejor aún, dividir realmente la parte superior y la inferior, y parar inmediatamente después de un control infructuoso.
Si todo lo demás falla, pruebe con la OCL.
No habrá una gran diferencia.
Falta al menos un descanso:
Mejor aún, separe realmente la parte superior y la inferior, y deténgase inmediatamente después de un control infructuoso.
Aun así, la OCL (o el paralelismo en sentido general) no es una optimización algorítmica, sino técnica.
Dudo que en tu caso haya necesidad de paralelizar la solución más rápida O(N)-variable del problema.
Lo hará.
¿No hay yada yada? Muéstrame.
Así que, buena suerte. Discutir la optimización de un algoritmo cuya complejidad depende linealmente del valor de un parámetro es probablemente algo que no tiene nada que ver.
¿No hay yada yada? Muéstrame.
De todos modos, buena suerte. Discutir la optimización de un algoritmo cuya complejidad depende linealmente del valor de un parámetro.
Bien, terminaré de completar el algoritmo y publicaré los resultados del paralelismo en el estudio.
Aun así, la OCL (o el paralelismo en sentido general) no es una optimización algorítmica, sino más bien técnica.
Dudo que haya necesidad de paralelizar la solución más rápida de O(N)-variante en su caso.
¿Cómo puedo decirlo? Cualquier paralelización es siempre una grave complicación de los algoritmos. Además, si no se paraleliza un algoritmo con dependencia lineal de la cantidad de datos, ¿qué más se puede paralizar?
En resumen, voy a reescribir el algoritmo y ver lo que trae.
De nuevo, la separación de las partes superiores e inferiores da lugar a dos pases para. Esto duplica el tiempo de búsqueda. La separación por sí misma no proporciona una ganancia de rendimiento sin utilizar el multithreading, especialmente para n pequeños.
¿Cómo puedes estar tan seguro?
Mi comprobación muestra lo contrario:
01:29:25 SpeedTest EURUSD,M15 entradas: Interations=10000; pperiod=10;
01:29:25 SpeedTest EURUSD,M15: Número de barras = 3780
01:30:46 SpeedTest EURUSD,M15: Función original: 81.558 seg, extrema: 131 / 121
01:31:10 SpeedTest EURUSD,M15: Con mi edición (ruptura): 23.291 seg, extrema: 131 / 121
01:31:27 SpeedTest EURUSD,M15: Con mi ruptura (break): 17.565 seg, extrema: 131 / 121
Se adjunta un script mq4.
Una prueba más para completar el cuadro:
01:38:56 SpeedTest EURUSD,M1 inputs: Interations=1000; pperiod=100;
01:38:56 SpeedTest EURUSD,M1: Número de barras = 33896
01:50:19 SpeedTest EURUSD,M1: Función original: 683,565 seg, extrema: 121 / 127
01:50:54 SpeedTest EURUSD,M1: Con mi edición (ruptura): 34.383 seg, extrema: 121 / 127
01:51:16 SpeedTest EURUSD,M1: Con mi ruptura (break): 22.714 seg, extrema: 121 / 127