Velocidade de execução das funções ceil(),round(),floor() - página 8

 
Nikolai Semko:

Opção para números positivos e negativos:

Isto parece ser um substituto completo para o ceil(),round(),floor(), o que dá 3-4 vezes a vantagem da velocidade.

Parece mais ou menos decente. Eu executei seu _round(), lembre-se de mostrar a função compare_prices(). Portanto, há um roteiro que busca padrões de preços, obviamente o compare_prices() é chamado lá muito ativamente. Resultados:

compare_prices with std round and with point difference checking = 13 seg
compare_prices with std round and with point difference checking closed = 19 seg
compare_prices with your _round and with point difference checking closed = 15 seg
compare_prices with your _round and with point difference checking turned = 13 seg


A conclusão é que a maior parte das chamadas em tarefas do mundo real termina na verificação em Point. O tempo é o mesmo (quando a verificação das diferenças em Point está ligada), mas o intervalo de trabalho caiu de 1,7*10^308 para cerca de 2*10^9 (ou ^19 se for longo) (embora uma grande rodada seja necessária como uma quinta roda em um carrinho). Não sei, talvez você use essas funções de forma exótica de alguma forma ...

SZU:

Alert( _ceil(-1+DBL_EPSILON) );   // 2.220446049250313e-16

envoltório x entre parênteses.

 
Se o tempo de CPU que você economiza for multiplicado por um bilhão, mesmo assim seria menos do que o tempo que você gastou discutindo IMHO
 
Alexey Navoykov:

Parece que Nikolai estava certo sobre os nerds ))).

Pessoalmente, eu não vi nenhum ataque pessoal lá. E você tem muitas cartas em seus postos, mas tudo está fora de tópico, parece que você está discutindo apenas para discutir.


 
LRA:
Se o tempo de CPU economizado for multiplicado por um bilhão, mesmo assim seria menos do que o tempo que você gastou na discussão IMHO

Sim, concordo, é uma pena desperdiçar tempo - fato.

 
Nikolai Semko:

Sim, eu concordo, é uma perda de tempo - isso é um fato.

Então por que você escreveu aqui em primeiro lugar? Pensei que era para discussão, discussão. Bem, não seja tão irrazoável. Mas não relaxe, você tem todo um campo não explorado à sua frente https://www.mql5.com/ru/docs/math. Boa sorte))

Документация по MQL5: Математические функции
Документация по MQL5: Математические функции
  • www.mql5.com
Математические функции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
pavlick_:

Parece mais ou menos decente. Eu executei seu _round(), lembre-se de mostrar a função compare_prices(). Portanto, há um roteiro que procura modelos de preços, obviamente o compare_prices() é chamado lá muito ativamente. Resultados:

Portanto, a conclusão é que a maior parte das chamadas em tarefas reais termina no ponto de verificação. O tempo é o mesmo (quando a verificação das diferenças em Point está ligada), enquanto o intervalo de trabalho caiu de 1,7*10^308 para cerca de 2*10^9 (ou ^19 se usar longo) (embora uma grande rodada seja necessária como uma quinta roda de um carrinho). Não sei, talvez você use essas funções de forma exótica de alguma forma ...

ZS:

Envolver x entre parênteses.


Eu não consegui entender - em que casos é necessário utilizar esta função:?

// 0 - first is greater than second
// 1 - equal
// 2 - second is greater than first
uchar compare_prices(double first, double second)
{
   if(first - second >= _Point)
      return 0;
   if(second - first >= _Point)
      return 2;

   first = round(first/_Point);
   second = round(second/_Point);
   
   if(first > second)
      return 0;
   if(first < second)
      return 2;
   return 1;
}

porque não usarapenas se (primeiro>segundo), ou se você precisar de um resultado (0,1 ou 2) :

#define _compare_prices(f,s) (f>s)?0:(f<s)?2:1;

Porque aqui você não precisa de funções de arredondamento.

Ou é apenas para um teste?

 
Nikolai Semko:

Não, esta é uma função real. Só por interesse, eu o coloco em meu trabalho. Nikolai, bem, eu entendo que não há necessidade de discussão. Vou deixar por aí.

 
pavlick_:

Não, esta é uma função real. Só por interesse, eu o ajustei para o meu trabalho. Nikolai, bem, eu entendo que não há necessidade de discussão. Vou deixar por aí.

pavlick_:

Então por que você escreveu aqui? Pensei que era para discussão, estou discutindo. Bem, não seja tão irrazoável. Mas você não relaxa, na sua frente, todo o campo não explorado https://www.mql5.com/ru/docs/math. Boa sorte).

:) O que eu quis dizer é que é uma pena pelo tempo perdido no "esclarecimento da relação", infelizmente neste tópico ele ocorreu. Não se desperdiça tempo com discussões construtivas.