Velocidad de ejecución de las funciones ceil(),round(),floor() - página 8

 
Nikolai Semko:

Opción de números positivos y negativos:

Esto parece ser un reemplazo completo para ceil(),round(),floor(), que da 3-4 veces la ventaja de velocidad.

Parece más o menos decente. He ejecutado su _round(), recuerde que muestra la función compare_prices(). Entonces, hay un script que busca patrones de precios, obviamente compare_prices() es llamado allí muy activamente. Resultados:

comparar_precios con la ronda estándar y con la comprobación de la diferencia de puntos = 13 seg
comparar_precios con la ronda estándar y con la comprobación de la diferencia de puntos desactivada = 19 seg
comparar_precios con su _ronda y con la comprobación de la diferencia de puntos desactivada = 15 seg
comparar_precios con su _ronda y con la comprobación de la diferencia de puntos activada = 13 seg


La conclusión es que la mayor parte de las llamadas en las tareas del mundo real terminan en la comprobación del punto. El tiempo es el mismo (cuando la comprobación de las diferencias en el punto está activada), pero el rango de trabajo ha bajado de 1,7*10^308 a unos 2*10^9 (o ^19 si se utiliza el largo) (aunque se necesita una gran ronda como quinta rueda en un carro). No sé, tal vez usted utiliza estas funciones exóticamente de alguna manera ...

SZU:

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

envolver x entre paréntesis.

 
Si el tiempo de la CPU que se ahorra se multiplica por mil millones, incluso entonces sería menos que el tiempo que se ha dedicado a discutir IMHO
 
Alexey Navoykov:

Parece que Nikolai tenía razón sobre los nerds )).

Personalmente, no vi ningún ataque personal allí. Y sí que tienes muchas letras en tus posts, pero todo es off-topic, parece que discutes por discutir.


 
LRA:
Si el tiempo de la CPU que se ahorra se multiplica por mil millones, incluso entonces sería menos que el tiempo que se dedicó a la discusión IMHO

Sí, estoy de acuerdo, la pérdida de tiempo es una pena, es un hecho.

 
Nikolai Semko:

Sí, estoy de acuerdo, es una pérdida de tiempo - es un hecho.

Entonces, ¿por qué escribiste aquí en primer lugar? Pensé que era para discutir, discutir. Bueno, no seas tan poco razonable. Pero no te relajes, tienes todo un campo sin arar delante de ti https://www.mql5.com/ru/docs/math. Buena suerte))

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

Parece más o menos decente. He ejecutado su _round(), recuerde que muestra la función compare_prices(). Entonces, hay un script que busca modelos de precios, obviamente compare_prices() es llamado allí muy activamente. Resultados:

Así que la conclusión es que la mayor parte de las llamadas en las tareas reales terminan en la comprobación del punto. El tiempo es el mismo (cuando la comprobación de las diferencias en el punto está activada), mientras que el rango de trabajo ha bajado de 1,7*10^308 a cerca de 2*10^9 (o ^19 si se utiliza el largo) (aunque se necesita una gran ronda como quinta rueda de un carro). No sé, tal vez usted utiliza estas funciones exóticamente de alguna manera ...

ZS:

Envuelve la x entre paréntesis.


No he podido entender - ¿en qué casos es necesario utilizar esta función:?

// 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;
}

por qué no usarsimplemente if (first>second), o si necesitas un resultado (0,1 o 2) :

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

Porque aquí no se necesitan funciones de redondeo.

¿O es sólo para una prueba?

 
Nikolai Semko:

No, esta es una función real. Sólo por el interés, lo pongo en mis trabajos. Nikolai, bueno, entiendo que no hay necesidad de discutir. Lo dejaré así.

 
pavlick_:

No, esta es una función real. Sólo por el interés, lo he retocado en mis trabajos. Nikolai, bueno, entiendo que no hay necesidad de discutir. Lo dejaré así.

pavlick_:

Entonces, ¿por qué escribiste aquí? Pensé que era para discutir, estoy discutiendo. Bueno, no seas tan poco razonable. Pero no te relajas, delante de ti todo el campo sin arar https://www.mql5.com/ru/docs/math. Buena suerte).

:) Lo que quería decir es que es una pena el tiempo que se pierde en "arreglar las cosas", desgraciadamente en este hilo ha ocurrido. No se pierde tiempo en discusiones constructivas.