
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
O problema está todo no segundo ciclo. Lida simultaneamente com ramos esquerdos e direitos a partir de potenciais extremos e, portanto, só passa por (N - 1)/2 barras, mas isso não é suficiente. As medições mostram que o tempo gasto na procura de um extremo numa progressão aritmética depende do período N, que é muito, muito mau:
Falta pelo menos uma pausa:
Melhor ainda, dividir realmente o topo e a base, e parar imediatamente após um controlo mal sucedido.
Se tudo o resto falhar, tente OCL.
Não fará uma grande diferença.
Falta pelo menos uma pausa:
Melhor ainda, separar realmente topo e fundo, e parar imediatamente após um controlo mal sucedido.
Ainda assim, OCL (ou paralelismo no sentido geral) não é uma optimização algorítmica, mas sim uma optimização técnica.
Duvido que no seu caso haja necessidade de paralelizar a solução O(N)-variante mais rápida para o problema.
Ele irá.
Sem yada yada? Mostre-me.
Portanto, boa sorte. Discutir a optimização de um algoritmo com complexidade que depende linearmente do valor de um parâmetro é provavelmente algo que não tem nada a fazer.
Sem yada yada? Mostre-me.
Seja como for, boa sorte. Discutir a optimização de um algoritmo com complexidade linearmente dependente do valor de um parâmetro - não tem realmente nada a fazer.
OK, vou terminar de completar o algoritmo e afixar os resultados do paralelismo no estúdio.
Ainda assim, OCL (ou paralelismo no sentido geral) não é uma optimização algorítmica - é mais uma optimização técnica.
Duvido que haja necessidade de paralelizar a solução O(N)-variante mais rápida no seu caso.
Como posso dizer? Qualquer paralelização é sempre uma complicação grave dos algoritmos. Além disso, se não paralelizar um algoritmo com uma dependência linear da quantidade de dados, o que mais se pode paralelizar?
Em suma, vou reescrever o algoritmo e ver o que ele traz.
Mais uma vez, a separação das partes superiores e inferiores resulta em dois passes para. Isto duplica o tempo de pesquisa. A separação por si só não proporciona ganho de desempenho sem a utilização de multithreading, especialmente para pequenos n.
Como pode ter tanta certeza?
O meu cheque mostra o contrário:
01:29:25 SpeedTest EURUSD,M15 entradas: Interações=10000; pperiod=10;
01:29:25 SpeedTest EURUSD,M15: Número de barras = 3780
01:30:46 SpeedTest EURUSD,M15: Função original: 81.558 seg, extrema: 131 / 121
01:31:10 SpeedTest EURUSD,M15: Com a minha edição (pausa): 23.291 seg, extrema: 131 / 121
01:31:27 SpeedTest EURUSD,M15: Com o meu intervalo (pausa): 17.565 seg, extrema: 131 / 121
Em anexo está um guião mq4.
Mais um teste para completar o quadro:
01:38:56 SpeedTest EURUSD,M1 entradas: Interações=1000; pperiod=100;
01:38:56 SpeedTest EURUSD,M1: Número de barras = 33896
01:50:19 SpeedTest EURUSD,M1: Função original: 683.565 seg, extrema: 121 / 127
01:50:54 SpeedTest EURUSD,M1: Com a minha edição (pausa): 34.383 seg, extrema: 121 / 127
01:51:16 SpeedTest EURUSD,M1: Com o meu intervalo (pausa): 22.714 seg, extrema: 121 / 127