Скорость выполнения функций ceil(),round(),floor() - страница 8

 
Nikolai Semko:

Вариант для положительных и отрицательных чисел:

Это уже, похоже, заявка на полноценную замену функциям ceil(),round(),floor(), которая дает выигрыш в скорости в 3-4 раза.

Вроде выглядит более менее прилично. Я погонял вашу _round(), помните показывал ф-ю compare_prices(). Так вот, есть скрипт, который ищет ценовые модели, очевидно, что compare_prices() вызывается там очень активно. Результаты:

compare_prices с std round и с проверкой на разницу в Point = 13 сек
compare_prices с std round и с отключенной проверкой на разницу в Point = 19 сек
compare_prices c вашей _round и с отключенной проверкой на разницу в Point = 15 сек
compare_prices c вашей _round и с включённой проверкой на разницу в Point = 13 сек


Направшивается вывод - на проверке в Point заканчивается львиная часть вызовов в реальных задачах. Время то же (при включенной проверке на разницу в Point), а рабочий диапазон упал с 1,7*10^308 до примерно 2*10^9 (ну или ^19, если с long) (хотя при болшой степени round нужна как пятое колесо телеге). Ну не знаю, может вы как-то экзотически эти функции используете ...

ЗЫ:

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

обворачивайте x в скобки.

 
Если сэкономленное Вами время процессора умножить на миллиард, то и тогда оно будет меньше времени, затраченного Вами на обсуждение ИМХО
 
Alexey Navoykov:

Похоже что Николай оказался прав насчёт зануд ))

Вот лично я нигде там не увидел перехода на личности.  А в ваших постах действительно много букв, но всё как-то мимо темы, такое ощущение что вы спорите просто ради спора.


 
LRA:
Если сэкономленное Вами время процессора умножить на миллиард, то и тогда оно будет меньше времени, затраченного Вами на обсуждение ИМХО

Да, согласен, потраченного времени жалко - факт.

 
Nikolai Semko:

Да, согласен, потраченного времени жалко - факт.

А зачем тогда вообще сюда писали? Я думал для обсуждения, обсуждаю. Ну не надо так недо. Но вы не расслабляйтесь, перед Вами целое непаханое поле https://www.mql5.com/ru/docs/math. Удачи ))

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

Вроде выглядит более менее прилично. Я погонял вашу _round(), помните показывал ф-ю compare_prices(). Так вот, есть скрипт, который ищет ценовые модели, очевидно, что compare_prices() вызывается там очень активно. Результаты:

Направшивается вывод - на проверке в Point заканчивается львиная часть вызовов в реальных задачах. Время то же (при включенной проверке на разницу в Point), а рабочий диапазон упал с 1,7*10^308 до примерно 2*10^9 (ну или ^19, если с long) (хотя при болшой степени round нужна как пятое колесо телеге). Ну не знаю, может вы как-то экзотически эти функции используете ...

ЗЫ:

обворачивайте x в скобки.


Не смог я понять - в каких случаях возникает необходимость в применении данной функции:?

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

почему не использовать просто if (first>second), ну или если нужен результат (0,1 или 2) :

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

ведь здесь не нужны функции округления.

Или это просто для теста?

 
Nikolai Semko:

Нет, это реальная функция. Ради интереса подставил в свои наработки. Николай, ну я понял, что обсуждение не нужно. На этом закончу.

 
pavlick_:

Нет, это реальная функция. Ради интереса подставил в свои наработки. Николай, ну я понял, что обсуждение не нужно. На этом закончу.

pavlick_:

А зачем тогда вообще сюда писали? Я думал для обсуждения, обсуждаю. Ну не надо так недо. Но вы не расслабляйтесь, перед Вами целое непаханое поле https://www.mql5.com/ru/docs/math. Удачи ))

:) Я имел ввиду, что жаль потраченного времени на "выяснение отношений", к сожалению в этом топике оно имело место быть. На конструктивное обсуждение времени не жалко.