Библиотеки: Высокопроизводительная библиотека iTimeSeries

 

Высокопроизводительная библиотека iTimeSeries:

Эта библиотека предоставляет молниеносный доступ к таймсериям для реализации привычных методов MQL4 (например, iBarShift) в чувствительных к задержкам приложениях на MQL5.

AV Benchmark

Автор: nicholishen

 

Отличная работа.

Однако ваше сравнение с производительностью iBarshift немного не корректно, цель цикла в 100,000 итераций - получить усредненное и пригодное для использования значение времени (в мс). Ваша функция iBarShift() требует инициализации объекта, и эта инициализация учитывается не в цикле, а за его пределами. В любом случае, хранить все значения в памяти быстрее, чем вычислять их каждый раз.

 

BTW, iBarShiftFast, упомянутый в эталонных бенчмарках, может быть улучшен до простого:

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

Улучшение заключается в полном отказе от SeriesInfoInteger и использовании постоянной даты в далеком будущем.

 
Alain Verleyen:

Отличная работа.

Однако ваше сравнение с производительностью iBarshift немного не корректно, цель цикла в 100,000 итераций - получить усредненное и пригодное для использования значение времени (в мс). Ваша iBarShift() требует инициализации объекта, и эта инициализация учитывается не в цикле, а за его пределами. В любом случае, хранить все значения в памяти быстрее, чем вычислять их каждый раз.


Спасибо! :)


Это замечательный момент, и да, демонстрация "режима производительности" инициализирует вне цикла, однако прямой вызов iBarShift во втором бенчмарке инстанцирует объект, поэтому ему требуется больше времени для завершения 100 000 циклов... потому что он должен инстанцировать и инициализировать статический глобальный объект перед обращением к нему за данными - поэтому второй тест является справедливым сравнением. "Режим производительности" также является справедливым сравнением, если рассматривать его как доступ к данным только в рамках операции "горячего пути".

BTW, я только что провел несколько тестов и хочу еще раз уточнить для всех, кто это читает: Этот метод быстрее только в том случае, если вы планируете разделить обновление данных и вызов данных на отдельные пути ИЛИ вы вызываете любую комбинацию вызовов функций временного ряда более 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:
Seriously ? It's just a trick.
 
Alain Verleyen:
Seriously ? It's just a trick.

Такой тест производительности написал сам автор библиотеки.

Пример с небольшой долей юмора показывает, что тест должен быть несколько иным. + другая реализация проверочной функции.

 
fxsaber :

This performance test written by the author of the library.

Example with a little bit of humor shows that the test should be somewhat different. + Other implementation verification functions.


You're right. The test was designed to reflect the benchmark Alain. Here is an example with a time shift to more accurately simulate the use in the real world for this algorithm.

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

Файлы:
 
nicholishen:


You're right. The test was designed to reflect the benchmark Alain. Here is an example with a time shift to more accurately simulate the use in the real world for this algorithm.

Высокая производительность нужна для тестера/оптимизатора (только).

Покажите, пожалуйста, результат сравнительный результат Вашей библиотеки в тестере/оптимизаторе.

 
fxsaber:

Высокая производительность нужна для тестера/оптимизатора (только).

Покажите, пожалуйста, результат сравнительный результат Вашей библиотеки в тестере/оптимизаторе.


...также нужна для сложных построений - из многих объектов