Получаем количество десятичных знаков после запятой любых чисел (не только котировок) в обход Digits() на MQL4 и MQL5 - страница 20

 
Алексей Тарабанов:

Результат чего? 

Скорости
 
fxsaber:

Кратность - условие задачи.

Просто, головоломка? 

 
Алексей Тарабанов:

Просто, головоломка? 

Практические применения

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

Новая версия платформы MetaTrader 5 build 1930: Плавающие окна графиков и .Net библиотеки в MQL5

fxsaber, 2018.12.09 00:18

Этот пример теперь работает в 15 раз быстрее

1000000
Time[TestResource()] = 286646


Грубо говоря, полный цикл записи/чтения тиков через ресурс идет со скорость 4 миллиона тиков в секунду.


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

Обсуждение статьи "Многопоточный асинхронный WebRequest на MQL5 своими руками"

fxsaber, 2018.12.09 00:52

Попробуйте обновленный Resource_Data.mqh, лаги при передачи веб-страниц должны исчезнуть.

#include <fxsaber\TradeTransactions\ResourceData.mqh> // https://www.mql5.com/ru/code/22166

#define BENCH(A)                                                              \
{                                                                             \
  const ulong StartTime = GetMicrosecondCount();                              \
  A;                                                                          \
  Print("Time[" + #A + "] = " + (string)(GetMicrosecondCount() - StartTime)); \
}  

const RESOURCEDATA<uchar> Resource("::" + __FILE__); // Ресурс для передачи данных (байты)
uchar BytesIn[];
const int Init = ArrayResize(BytesIn, 1000000);

void TestResource()
{
  uchar BytesOut[];

  Resource = BytesIn;
  Print(Resource.Get(BytesOut));
}

void OnStart()
{
  BENCH(TestResource());
}


Старая версия

1000000
Time[TestResource()] = 103746


Новая версия

1000000
Time[TestResource()] = 5222
 
Ilya Malev:

А там есть сравнение скорости сортировки с обычным встроенным ArraySort на рандомной выборке?  Хоть один метод который случайные данные в среднем сортирует быстрее...

Или не быстрее, а хотя бы также. Или не также, а хотя бы не больше, чем вдвое дольше. Без всяких Dll и пр. шаманства вроде многопоточности

Есть исходники, можно замерить самому.

 
Лентяй. 
 
Nikolai Semko:
Не могу пройти мимо. 
Обязательно поучавствую, когда доберусь до компа.
После быстрого просмотра уже есть идеи, как на 10-20% улучшить результат.

Боюсь, уже уперлись в максимальную производительность. 

 
fxsaber:

Боюсь, уже уперлись в максимальную производительность. 

Возможно чего то не заметил. Но если используете union только одного типа, то есть еще потенциал.
 
Nikolai Semko:
Возможно чего то не заметил. Но если используете union только одного типа, то есть еще потенциал.

Рад буду ошибиться.

 
Алексей Тарабанов:
Лентяй. 
От Вас несет перегаром. Харэ бухать,  товарищ подполковник.
 
fxsaber:

Рад буду ошибиться.

Пока в дороге. Можете сами попробовать. Идея в том, чтобы использовать юнионы с массивами структур различной размера, например 10, 100, 1000, 10000...
Это сократит цикл на порядки и сократит на порядки колличество вызовов ArrayCopy.
Это должно приблизить к варианту с memcopy
Причина обращения: