Surge a pergunta, qual é o efeito - claro que eu vi do código, que na verdade eles removeram "se"? Mas gostaria de fazer um comentário, porque não está claro qual é o ganho em termos de uma lógica mais rápida.
Solução intuitiva - mover o código grande para a função (melhor ainda estaria em separado), livrar-se do if, incrementar e quebrar.
Também estou muito confuso sobre a obtenção dos valores das variáveis a serem analisadas. No exemplo de teste, estes são randoms, mas na realidade? Eu já deixaria lá valores booleanos puros para verificar (bool_a > 10.0) em vez de (double_a).
A solução intuitiva é colocar o código grande em uma função (ou melhor ainda, em um inlude separado) e se livrar do if, incrementar e quebrar.
Na verdade, já é uma função, então não está claro porque há tal ganho de desempenho!
Eu uso inlude em meu código de trabalho, mas é puramente migração em código, como você se propõe a organizá-la? O Bray aumenta significativamente o desempenho - como eu me livro dele para não perder velocidade?
Andrey Khatimlianskii:
Também estou muito confuso ao obter os valores das variáveis analisadas. No exemplo de teste são os randoms, mas na realidade? Eu já deixaria lá valores booleanos puros, para que eu pudesse verificar (bool_a > 10.0) em vez de (double_a).
Na realidade é o mesmo que o dobro - os dados são tirados de um arquivo externo, que é lido completamente no buffer durante a inicialização. Então eu não entendia exatamente como fazer deles um bool.
Maxim Romanov: O 3800x quase alcançou o i7 8700 em termos de desempenho no fluxo. E saiu do 2700.
Isto se deve provavelmente à redução da latência da memória e ao dobro do cache.
Conclusão: para o mt5, o fator decisivo é a latência de acesso à memória e a velocidade de leitura da memória.
Isto também é confirmado pelo baixo desempenho da rosca 2990 wx. Eles têm altas latências de memória apesar dos 4 canais e do manuseio específico do cache.
Portanto, a velocidade dos núcleos em si não é tão importante.
Então vou assumir que durante a otimização a freqüência cai simplesmente por ideologia. Por uma questão de interesse, faça um período mais longo de qualquer EA - não 16 passes, mas diga 160 - eu me pergunto como isso muda o tempo do passe - a diferença deve ser mínima - dentro de 1 segundo.
O Bray aumenta significativamente o desempenho - como eu me livro dele para não perder velocidade?
Substitui-la por um retorno, como no meu exemplo.
Aleksey Vyazmikin:
Na realidade também é o dobro - os dados são retirados de um arquivo externo, que é lido completamente em buffer durante a inicialização. É por isso que eu não entendia exatamente como fazer disso um bool.
Em vez de
int Povtor_High_M1 = X;
if ( Povtor_High_M1>=0 ) ***
if ( Povtor_High_M1< 0 ) ***
Faça
bool Povtor_High_M1 = (X >= 0);
if ( Povtor_High_M1 ) ***
if ( !Povtor_High_M1 ) ***
Infelizmente, eu não sou inteligente, mas X>=0 pode ser maior que qualquer outro número - há muitas combinações - você não pode prever tudo no código, e o código crescerá em muitas ordens de magnitude devido a várias combinações.
Surge a pergunta, qual é o efeito - claro que eu vi do código, que na verdade eles removeram "se"? Mas gostaria de fazer um comentário, porque não está claro qual é o ganho em termos de uma lógica mais rápida.
Solução intuitiva - mover o código grande para a função (melhor ainda estaria em separado), livrar-se do if, incrementar e quebrar.
Também estou muito confuso sobre a obtenção dos valores das variáveis a serem analisadas. No exemplo de teste, estes são randoms, mas na realidade? Eu já deixaria lá valores booleanos puros para verificar (bool_a > 10.0) em vez de (double_a).
Nova construção, novo testador, novo compilador... falta a coluna "construir mt5" na tabela de resumo
Até agora o resultado é estável - verificado ontem, portanto não espere saltos de desempenho de construção para construção.
A solução intuitiva é colocar o código grande em uma função (ou melhor ainda, em um inlude separado) e se livrar do if, incrementar e quebrar.
Na verdade, já é uma função, então não está claro porque há tal ganho de desempenho!
Eu uso inlude em meu código de trabalho, mas é puramente migração em código, como você se propõe a organizá-la? O Bray aumenta significativamente o desempenho - como eu me livro dele para não perder velocidade?
Também estou muito confuso ao obter os valores das variáveis analisadas. No exemplo de teste são os randoms, mas na realidade? Eu já deixaria lá valores booleanos puros, para que eu pudesse verificar (bool_a > 10.0) em vez de (double_a).
Na realidade é o mesmo que o dobro - os dados são tirados de um arquivo externo, que é lido completamente no buffer durante a inicialização. Então eu não entendia exatamente como fazer deles um bool.
O 3800x quase alcançou o i7 8700 em termos de desempenho no fluxo. E saiu do 2700.
e o 3800X não deve se afastar do 2700?
Então vou assumir que durante a otimização a freqüência cai simplesmente por ideologia. Por uma questão de interesse, faça um período mais longo de qualquer EA - não 16 passes, mas diga 160 - eu me pergunto como isso muda o tempo do passe - a diferença deve ser mínima - dentro de 1 segundo.
F
PS Talvez você tenha um teste que carrega RAM?
F
PS Talvez você tenha um teste que carrega RAM?
Obrigado, a média foi aproximadamente a mesma dos 16 passes - vamos supor que esses são os dados corretos.
Para a memória, infelizmente, não há nada adequado no domínio público.
O 3800X não deveria ter se separado do 2700?
Eu deveria ter, assumi as razões, para que eu tenha algo em que basear minha escolha de ferro no futuro.
Entendi, obrigado.
O Bray aumenta significativamente o desempenho - como eu me livro dele para não perder velocidade?
Substitui-la por um retorno, como no meu exemplo.
Na realidade também é o dobro - os dados são retirados de um arquivo externo, que é lido completamente em buffer durante a inicialização. É por isso que eu não entendia exatamente como fazer disso um bool.
Em vez de
Faça
Substituir por um retournee, como no meu exemplo.
Em vez de
Faça
Infelizmente, eu não sou inteligente, mas X>=0 pode ser maior que qualquer outro número - há muitas combinações - você não pode prever tudo no código, e o código crescerá em muitas ordens de magnitude devido a várias combinações.