Avaliação de núcleos de CPU para otimização - página 11

 
Aleksey Vyazmikin:

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).

 
Igor Zakharov:

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.

 
Andrey Khatimlianskii:

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.
Talvez seja assim que funciona.

e o 3800X não deve se afastar do 2700?

 
Aleksey Vyazmikin:

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?

 
Pavel Verveyko:

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.

 
Pavel Verveyko:

O 3800X não deveria ter se separado do 2700?

Deveria ter, sugeri razões para continuar no futuro ao selecionar o hardware.
 
Maxim Romanov:
Eu deveria ter, assumi as razões, para que eu tenha algo em que basear minha escolha de ferro no futuro.

Entendi, obrigado.

 
Aleksey Vyazmikin:

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 ) ***
 
Andrey Khatimlianskii:

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.