ceil(),round(),floor()関数の実行速度 - ページ 8

 
Nikolai Semko:

正の数、負の数に対するオプション。

これは、ceil(),round(),floor()の本格的な置き換えと思われ、3〜4倍の速度アドバンテージがある。

見た目はそこそこまとも私はあなたの_round()を実行し、compare_prices()関数を表示することを忘れないでください。そこで、価格パターンを検索するスクリプトがあり、明らかにcompare_prices()が非常に活発に呼び出されています。結果

compare_prices with std round and with point difference checking = 13 sec
compare_prices with std round and with point difference checking turned off = 19 sec
compare_prices with your _round and with point difference checking turned off = 15 sec
compare_prices with your _round and with point difference checking turned on = 13 sec


結論は、現実のタスクにおける呼び出しの大部分は、Pointの チェックで終わっているということです。時間は同じ(Pointでの差分チェックがONの場合)ですが、ワーキングレンジが1.7*10^308から2*10^9(ロング使用の場合は^19)程度に下がりました(カートの五輪として大丸は必要ですが)。もしかしたら、これらの機能をエキゾチックに使っているのかもしれませんね.

SZUです。

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()が非常に活発に呼び出されています。結果

つまり、リアルタスクでの呼び出しの大部分は、チェックインポイントで終わっているという結論になります。時間は同じ(Pointでの差分チェックがONの場合)、動作範囲は1.7*10^308から2*10^9(ロングなら^19)程度に低下(台車の5輪として大丸が必要だが)。もしかしたら、これらの機能をエキゾチックに使っているのかもしれませんね.

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 or 2) を使うか。

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

なぜなら、ここでは丸め関数は必要ないからです。

それともテスト用?

 
Nikolai Semko:

いいえ、これは本当の機能です。興味本位で、私の作品に手を加えてみました。ニコライ まあ、議論の必要がないことは理解している。この辺にしておきます。

 
pavlick_:

いいえ、これは本当の機能です。興味本位で、私の作品に手を加えてみました。ニコライ まあ、議論の必要がないことは理解している。この辺にしておきます。

pavlick_:

では、なぜここに書き込んだのでしょうか?議論するためのものだと思っていた、議論している。まあ、そんな理不尽なこと言わないでくださいよ。しかし、目の前には耕作していない畑が広がっている。https://www.mql5.com/ru/docs/math。頑張ってください(笑)。

:)私が言いたかったのは、このスレッドでは残念ながら「関係性の解明」が行われ、無駄な時間を過ごしてしまったことが残念だということです。建設的な議論に無駄な時間はない。