标准功能/方法的其他实现方式 - 页 6

 
fxsaber:

即使是类似物,在性能上也有很大的差异。能写的人或能找到的人还不到用户的一个百分比。

嗯,那是因为其他的人对现有的性能相当满意)事实上,坦率地说,这些速度的提高大多只在孤立的测试测量中是可观的。

当然,我并不主张我们应该追求完美,但最好是按照优先顺序来做。

 
Alexey Navoykov:

因为其他人对现有的性能相当满意 )毕竟,这些速度的提升大多只在孤立的测试测量中可以看到。

即使是1%的优化收益也会产生切实的效果。

我当然不反对追求完美,但建议按优先顺序来做。

对于MQ来说,你不如那些由于各种原因没有转到5的MT4聪明人大军有趣。

 
Библиотеки: Fast iBarShift and Bars for MT5
Библиотеки: Fast iBarShift and Bars for MT5
  • 2018.05.04
  • www.mql5.com
Fast iBarShift and Bars for MT5: Автор: Nikolai Semko...
附加的文件:
iBars.mqh  14 kb
 

标准函数ceil()、floor()、round()的更快类似物

2-2.5倍的速度优势

long Ceil (double x) { return (x-(long)x>0)?(long)x+1:(long)x; }
long Round(double x) { return (x>0)?(long)(x+0.5):(long)(x-0.5);}
long Floor(double x) { return (x>0)?(long)x:((long)x-x>0)?(long)x-1:(long)x; }

正确性和速度测试结果。

2018.08.25 17:23:23.199 TestRound (EURUSD,M10)  Время выполнения ceil =  3.745 наносекунд, Контрольная сумма = 5250492895
2018.08.25 17:23:23.200 TestRound (EURUSD,M10)  Время выполнения Ceil =  1.806 наносекунд, Контрольная сумма = 5250492895
2018.08.25 17:23:23.205 TestRound (EURUSD,M10)  Время выполнения floor = 4.243 наносекунд, Контрольная сумма = 5249492896
2018.08.25 17:23:23.206 TestRound (EURUSD,M10)  Время выполнения Floor = 1.621 наносекунд, Контрольная сумма = 5249492896
2018.08.25 17:23:23.209 TestRound (EURUSD,M10)  Время выполнения round = 2.984 наносекунд, Контрольная сумма = 5249992896
2018.08.25 17:23:23.211 TestRound (EURUSD,M10)  Время выполнения Round = 1.519 наносекунд, Контрольная сумма = 5249992896
标准函数的返回类型为双倍。但我没有重复,因为我不明白为什么圆周率函数需要double这个类型。
附加的文件:
TestRound.mq5  5 kb
 
Nikolai Semko:

正确性和速度测试的结果。

只是不是纳米级,而是英里级。

 
fxsaber:

只是它们不是纳米级的,是英里级的。

没有纳米。1000000通过,我把它除以1000。
只是它们的速度更快,因为它们是和循环通道的所有内容一起计算的。我将在3个小时内到我的电脑前,为纯粹的这些功能修正运行时间的计算。
 
Nikolai Semko:
没有纳米。1000000通过,我把它除以1000。
那么就是一种模棱两可的解释。决定输出周期时间,而不是每个函数调用 的平均时间。
 
fxsaber:
那么就有了模棱两可的解释。决定输出周期时间,而不是一个函数调用 的平均时间。
是的,这个时间仍然包括做三次加法和一次检查的时间。
我会解决这个问题,因为我知道怎么做。所以收益会更大。
 
Nikolai Semko:
标准函数的返回类型为双倍。但我没有重复,因为我不明白为什么圆周率函数需要double这个类型。

因为将双数转换为整数(这种方式)是低劣的代码。Round with friends的设计不是为了从浮动类型中获得整数类型。