函数ceil()、round()、floor()的执行速度 - 页 8

 
Nikolai Semko:

正数和负数的选项。

这似乎是对ceil(),round(),floor()的全面替代,它有3-4倍的速度优势。

看起来或多或少有点像样。我运行了你的_round(),记得显示了compare_prices()函数。所以,有一个搜索价格模式的脚本,显然compare_prices()在那里被非常积极地调用。结果。

用标准圆和点差检查来比较价格 = 13秒
用标准圆和点差检查来比较价格 = 19秒
用你的_圆和点差检查来比较价格 = 15秒
用你的_圆和点差检查来比较价格 = 13秒


结论是,在现实世界的任务中,大部分的调用都是在检查点 上结束的。时间是一样的(在点上检查差异时是打开的),但工作范围从1.7*10^308下降到约2*10^9(或^19,如果使用长)(尽管需要一个大圆作为小车的第五轮)。我不知道,也许你以某种方式例外地使用这些功能......

深圳大学。

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

在括号中包住x。

[删除]  
如果你节省的CPU时间乘以10亿,即使如此,也比你花在讨论上的时间少,IMHO
 
Alexey Navoykov:

看来尼古拉对书呆子的看法是正确的))。

就个人而言,我没有看到那里有任何人身攻击。而且你的帖子中确实有很多字母,但每件事都偏离主题,感觉你只是为了争论而争论。


 
LRA:
如果你节省的CPU时间乘以10亿,即使如此,也比你花在讨论上的时间少,IMHO

是的,我同意,浪费时间是一种遗憾--事实。

 
Nikolai Semko:

是的,我同意,这是在浪费时间--这是事实。

那你为什么一开始就在这里写?我想这是为了讨论,讨论。好吧,别这么不讲道理。但不要放松,你面前有一整块未耕种的田地https://www.mql5.com/ru/docs/math。 好运))。

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

它看起来或多或少有点像样。我运行了你的_round(),记得显示了compare_prices()函数。所以,有一个搜索价格模型的脚本,显然compare_prices()在那里被非常积极地调用。结果。

因此,结论是,实际任务中的大部分调用都是在Check in Point结束的。时间是一样的(当在点上检查差异时是打开的),而工作范围从1.7*10^308下降到约2*10^9(或^19,如果使用长)(虽然需要一个大圆作为小车的第五轮)。我不知道,也许你以某种方式例外地使用这些功能......

ZS。

把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。 祝你好运)。

:)我的意思是,在 "澄清关系 "上浪费的时间是很可惜的,不幸的是,在这个主题中,已经发生了。没有时间浪费在建设性的讨论上。