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
Tenho uma suspeita de que o autor deste comentário não sabe de todo como funciona o processador, a memória e o compilador...
Acho que o autor foi tão irrefletido que não entendeu a pergunta.
O que a memória e a CPU têm a ver com isso? A questão era sobre a otimização na MQL5.
P.S. Leia em seu lazer o pequeno livro " Technique of Attention Development, O.A. Andreev, 2007".
O que a memória e a CPU têm a ver com isso? A questão era sobre a otimização na MQL5.
Então esse código, na sua opinião, não usa nem memória nem CPU? E estou respondendo à declaração sobre compiladores: "Você terá que se esforçar muito para superar as otimizações dos compiladores modernos. "
Tenho uma suspeita de que o autor desta declaração não sabe de todo como funciona o processador, a memória e o compilador... Estou disposto a apostar que qualquer um de seus códigos pode ser acelerado pelo menos dez vezes, ou mesmo centenas de vezes.
Portanto, primeiro tente provar isso com respeito ao código em questão. Além disso, se você acredita nos resultados acima citados por Igor, é o contrário: a declaração dentro do laço funciona um pouco mais rápido.
Portanto, toda essa dança e essa confusão ao redor de tentar enganar o compilador custa mais no final das contas. Isso torna mais difícil para o compilador otimizar o código. Quando uma variável é declarada fora de um bloco é considerada externa epreserva seu estado entre iterações, o que significa que o compilador tem uma capacidade limitada de otimizá-la. O código limpo é sempre melhor otimizado do que o código "sujo" (que tem efeitos colaterais), se você estiver familiarizado com o paradigma de programação funcional.
Portanto, primeiro tente provar isso com respeito ao código em questão. Além disso, se você acredita nos resultados acima citados por Igor, é o contrário: a declaração dentro do laço funciona um pouco mais rápido.
Portanto, toda essa dança e essa confusão ao redor de tentar enganar o compilador custa mais no final das contas. Isso torna mais difícil para o compilador otimizar o código. Quando uma variável é declarada fora de um bloco é considerada externa e preserva seu estado entre iterações, o que significa que o compilador tem habilidades limitadas para otimizá-la. O código limpo é sempre melhor otimizado do que o código "sujo" (que tem alguns efeitos colaterais) se você conhecer o paradigma de programação funcional.
Leia a seu gosto meu livro, acho que você aprenderá muito sobre compiladores.
Portanto, primeiro tente provar isso com respeito ao código em questão. Além disso, se você acredita nos resultados acima citados por Igor, é o contrário: a declaração dentro do laço funciona um pouco mais rápido.
Portanto, toda essa dança e essa confusão ao redor de tentar enganar o compilador custa mais no final das contas. Isso torna mais difícil para o compilador otimizar o código. Quando uma variável é declarada fora de um bloco, ela é considerada como uma variável externa que mantém seu estado entre iterações. Isto significa que o compilador tem opções limitadas para sua otimização. O código limpo é sempre melhor otimizado do que o código "sujo" (que tem efeitos colaterais), se você estiver familiarizado com o paradigma de programação funcional.
Meu teste mostra o oposto, o código com uma declaração variável por trás do laço funciona mais rápido
https://www.mql5.com/ru/forum/320307/page2#comment_12886814
Rodar muitas vezes, resultado é estável, código com declaração de variável após o loop, funciona mais rápido
Meu teste mostra o oposto, o código com uma declaração variável por trás do laço é mais rápido
É estranho, mas antes o homem tinha os resultados opostos
Você deve aprender o básico primeiro e depois provar seu ponto de vista. Você entenderia o resultado sem nenhum teste, se você tivesse lido pelo menos um livro sobre operação de CPU e memória. Eu lhe ofereci o mais engenhoso, se você quiser avançar um pouco na programação, você o lerá.
Estranho, mas antes o homem tinha os resultados opostos
Eu já disse que tal teste de velocidade em um exemplo artificial não é nada indicativo. Minha pesquisa sob o depurador não é suficiente? Eu não tenho credibilidade? Tudo ignorado, cabe a você, estou fora.
Além disso, se você acredita nos resultados do Igor acima, é o oposto.
Eu não acredito em mim mesmo, eu sempre checo duas vezes, não acho que você precise aumentar minha auto-estima... Houve casos diferentes na história, vou encontrar um Napoleão, e vamos lá! ))))
É estranho, mas antes o homem obteve os resultados opostos.
Por que eu adicionei srand(GetTickCount()) ao meu teste? ?
;)