Erros, bugs, perguntas - página 2880
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
não
se houver secções de código repetitivo, terá testes de optimização!
Que diferença faz quanto tempo rand() é executado?
Que seja executado 2/3 do tempo de teste, o principal é fazer o rand() tempo constante
O seu código MQL irá utilizar as funções do sistema MQL, certo? - qual é o objectivo de testar um código perfeito?
)) a diferença de velocidade poderia ser 4 vezes a favor de um dos métodos (1 a 4), mas como a operação rand é 10 vezes mais lenta do que o resto do código, esta diferença não seria visível (11 a 14)
)) A diferença de velocidade poderia ter sido 4 vezes a favor de um dos métodos (1 a 4), mas como a operação rand 10 vezes mais longa do que o resto do código, esta diferença não teria sido visível (11 a 14)
não, não poderia
a diferença é imediatamente visível
vamos verificar algo anunciado nas inovações, eles escrevem frequentemente que o tempo de acesso às séries de tempos para alguma função foi optimizado = não verificado durante muito tempo
2020.10.16 02:11:20.671 SpeedTst (EURUSD,H1) tst 1 : : loops=10000000 ms=353174
2020.10.16 02:11:21.967 SpeedTst (EURUSD,H1) tst 2 : : : loops=10000000 ms=1296043
2020.10.16 02:11:21.967 SpeedTst (EURUSD,H1) 11304533.15558525 : 11303930.69247558
2020.10.16 02:11:44.012 SpeedTst (EURUSD,H1) tst 1 : : loops=10000000 ms=359757
2020.10.16 02:11:45.369 SpeedTst (EURUSD,H1) tst 2 : : : loops=10000000 ms=1357325
2020.10.16 02:11:45.369 SpeedTst (EURUSD,H1) 11304350.05612442 : 11304321.21848488
não é nada crítico
rand() o tempo de execução é constante, muito provavelmente é uma função C++ comum, google "rand c++ source code".
deve inicializá-lo, mas se o inicializar com constantes pode encontrar optimização
em geral, não compreendo a antipatia do rand()
uma opção é inicializar com algo como isto:
seria rápido.
correu o seu guião, imho não está correcto.
O tempo principal é carregar o código na cache e depois no processador
e acrescentar a discrição do temporizador do sistema
obtemos... quase um número aleatório.
precisa de o testar durante muito tempo, cerca de 100500 vezes, imho
rand() silencia o resultado.
No meu computador, uma iteração de loop demora cerca de 1,5 nanossegundos.
Com dois rand(), uma iteração leva o dobro do tempo - até quase 3 nanossegundos. Deveria perceber que nesta iteração dois acessos a um item de uma grande variedade irão desaparecer, o que também é bastante caro.
Isto significa que cerca de 2/3 de todo o tempo de iteração é gasto em dois rands(). Claro que fiquei um pouco excitado com "por uma ordem de grandeza")
Não compreendo como é que se pode entrar em optimização quando um array pré-preparado é preenchido com números aleatórios.
Já foi discutido uma vez o desempenho em rand(). Tentei até escrever eu próprio uma função semelhante.https://www.mql5.com/ru/forum/170952/page137#comment_12010041
resultado
Penso que o resultado final é que quase não faz diferença se se usa o turno sindical ou binário.
Utilizo estes dois métodos na minha biblioteca iCanvas para trabalhar com cor.
Lembro-me, também tenho feito alguns testes de desempenho, e concluí que quase não faz diferença. Mas o código com união é mais legível.
Devo admitir que fiquei desapontado porque esperava obter um ganho de desempenho notável com a união.
Não compreendo como é que se pode entrar em optimização quando um conjunto pré-preparado é preenchido com números aleatórios.
Dei-lhe 2 ligações no hubr acima, o primeiro artigo mostra bem o aspecto de um loop normal após a compilação
Não estou a dizer que tem necessariamente de conseguir a optimização em tempo de execução, mas imho, se o array não mudar, que é essencialmente um espaço de memória constante com um tamanho constante para o loop, não é um facto que a optimização não irá aparecer em algum tipo de processador, e a optimização pode ser esperada do compilador, bem como do processador com um cache
Penso que o resultado final é que quase não faz diferença o que usar - sindicato ou turno binário.
Dei-lhe 2 links no hbr acima, o primeiro artigo mostra bem como um loop normal se comporta após a compilação
Não estou a dizer que tem de se conseguir optimizar o tempo de execução, mas imho, se a matriz não mudar, que é essencialmente um espaço de memória constante com um tamanho constante para o loop, não é certo que não surja nenhuma optimização
A julgar pelos resultados, não há sinais de optimização
Os resultados não dão de modo algum a impressão de optimização
sim
O argumento não é sobre um código específico
mas na metodologia de teste, mantenho-me fiel ao que tento optimamente, e rand() embora introduza distorções, mas é um coeficiente linear, não proporcional, ou seja, a precisão não é muito importante se não houver diferença na velocidade inferior a 5%, imho
Olá a todos!
Tenho uma pergunta, talvez para os criadores da MQL5? Talvez outra pessoa saiba... Existem planos para integrar o compilador/codificador ME com alguns ambientes de desenvolvimento populares como IDEA ou Visual Studio? O Meta Editor é uma grande dor para mim. Sem colapso de blocos, sem modelos de auto-substituição (por exemplo, quando começa a escrever para(...) oferece-lhe imediatamente a substituição de um padrão de laço e muitas outras coisas), sem destaque de várias partes importantes do código. E assim por diante e coisas do género. Não estou a dizer que os robôs modernos são complicados, estes são grandes projectos e há exigências muito mais sérias à gestão de códigos e às capacidades de desenvolvimento de equipas.
Já ninguém escreve os seus próprios editores e compiladores - todos eles os abandonam e avançam para soluções prontas da Microsoft, JetBrains e outros. Todos os editores modernos têm sistemas de plugins personalizáveis que lhe permitem acrescentar o que quiser a eles. A tarefa não é difícil em princípio.
Caros Senhores, há alguém que me possa dar uma resposta a esta situação que eu não compreenda?
E deve intimidar ainda mais os programadores. Então terá ajuda com certeza.