干得不错。
不过,你对 iBarshift 性能的比较有点狡猾,100,000 次迭代循环的目的是获得平均的可用时间值(以毫秒为单位)。您的 iBarShift() 需要初始化一个对象,而初始化不在循环内,而是在循环外。 总之,将所有值保存在内存中肯定比每次计算要快。
顺便说一下,参考基准中提到的 iBarShiftFast 可以改进为简单的:
(Bars(symbol, timeframe, time, D'2100.01.01') - 1)
改进的方法是 完全 取消SeriesInfoInteger, 在遥远的未来使用恒定日期。
干得不错。
不过,你对 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. -------------------------------------------------------------
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
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. -------------------------------------------------------------
真的吗?这只是个小把戏。
这个性能测试是图书馆的作者自己写的。
这个带点幽默的例子说明,测试应该有点不同。+ 测试函数的另一种实现。
该性能测试由库的作者编写。
带点幽默的示例表明,测试应该有些不同。+ 其他执行验证功能。
你说得对。该测试旨在反映阿兰的基准。下面是一个带有时间偏移的示例,可以更准确地模拟该算法在现实世界中的使用情况。
你说得对。测试是为了反映阿兰的基准而设计的。下面是一个带有时间偏移的示例,可以更准确地模拟该算法在现实世界中的应用。
测试仪/优化器(仅)需要高性能。
请在测试器/优化器中显示您的库的比较结果。
测试仪/优化器(仅)需要高性能。
请在测试器/优化器中显示您的程序库的比较结果。
......复杂结构也需要 - 由许多对象组成
用于时间敏感应用程序的高性能 iTimeSeries:
作者: nicholishen