程序库: 用于时间敏感应用程序的高性能 iTimeSeries

 

用于时间敏感应用程序的高性能 iTimeSeries:

这个时间序列开发库可以在 MQL5 中快速访问,以便应用于对时间要求高的应用程序,而且实现了类似于 MQL4 的方法,例如 iBarShift。

作者: nicholishen

 

干得不错。

不过,你对 iBarshift 性能的比较有点狡猾,100,000 次迭代循环的目的是获得平均的可用时间值(以毫秒为单位)。您的 iBarShift() 需要初始化一个对象,而初始化不在循环内,而是在循环外。 总之,将所有值保存在内存中肯定比每次计算要快。

 

顺便说一下,参考基准中提到的 iBarShiftFast 可以改进为简单的:

(Bars(symbol, timeframe, time, D'2100.01.01') - 1)

改进的方法是 完全 取消SeriesInfoInteger 在遥远的未来使用恒定日期。

 
Alain Verleyen:

干得不错。

不过,你对 iBarshift 性能的比较有点狡猾,100,000 次迭代循环的目的是获得平均的可用时间值(以毫秒为单位)。您的 iBarShift() 需要初始化一个对象,而初始化不在循环内,而是在循环外。 总之,将所有值保存在内存中肯定比每次计算要快。


谢谢!:)


这是一个很好的观点,是的,"性能模式 "演示确实在循环之外进行了初始化,但是,第二个基准测试中对 iBarShift 的直接调用正在实例化一个对象,这就是为什么完成 100,000 次循环需要更长的时间......因为它必须先实例化和初始化一个静态全局对象,然后再调用它获取数据--所以第二个测试是一个公平的比较。如果将 "性能模式 "视为热路径操作中的数据访问,那么它也是一个公平的比较。

顺便说一下,我刚刚进行了一些测试,想再次向阅读此文的人说明一下:只有 当你计划将数据刷新和数据调用分离到不同的路径中,或者 你调用任何时间序列函数调用 组合的总次数超过每条 300 次时,这种方法才会更快。因此,换句话说,迭代 300 次是盈亏平衡点。如果每个条形图的调用次数不超过 300 次,而且 没有使用 "热路径",那么最好使用其他方法。

 
iBarShift benchmark based on 100000 runs.
=======================================================
iBarShift(Alain Verleyen) for 2017.04.11 19:56:37 is 45723 in 338.868 milliseconds.
-------------------------------------------------------------
iBarShift3 for 2017.04.11 19:56:37 is 45723 in 0.492 milliseconds.
-------------------------------------------------------------
iBarShift(direct function call) for 2017.04.11 19:56:37 is 45723 in 38.712 milliseconds.
-------------------------------------------------------------
iBar.Shift(performance mode) for 2017.04.11 19:56:37 is 45723 in 3.403 milliseconds.
-------------------------------------------------------------
附加的文件:
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки:iTimeSeries 时间系列

fxsaber, 2017.05.25 13:23

iBarShift benchmark based on 100000 runs.
=======================================================
iBarShift(Alain Verleyen) for 2017.04.11 19:56:37 is 45723 in 338.868 milliseconds.
-------------------------------------------------------------
iBarShift3 for 2017.04.11 19:56:37 is 45723 in 0.492 milliseconds.
-------------------------------------------------------------
iBarShift(direct function call) for 2017.04.11 19:56:37 is 45723 in 38.712 milliseconds.
-------------------------------------------------------------
iBar.Shift(performance mode) for 2017.04.11 19:56:37 is 45723 in 3.403 milliseconds.
-------------------------------------------------------------
 
fxsaber:
真的吗?这只是个小把戏。
 
Alain Verleyen:
真的吗?这只是个小把戏。

这个性能测试是图书馆的作者自己写的。

这个带点幽默的例子说明,测试应该有点不同。+ 测试函数的另一种实现。

 
fxsaber :

该性能测试由库的作者编写。

带点幽默的示例表明,测试应该有些不同。+ 其他执行验证功能。


你说得对。该测试旨在反映阿兰的基准。下面是一个带有时间偏移的示例,可以更准确地模拟该算法在现实世界中的使用情况。

https://i.imgtc.com/rhYzQFj.png

附加的文件:
 
nicholishen:


你说得对。测试是为了反映阿兰的基准而设计的。下面是一个带有时间偏移的示例,可以更准确地模拟该算法在现实世界中的应用。

测试仪/优化器(仅)需要高性能。

请在测试器/优化器中显示您的库的比较结果。

 
fxsaber:

测试仪/优化器(仅)需要高性能。

请在测试器/优化器中显示您的程序库的比较结果。


......复杂结构也需要 - 由许多对象组成