DirectX - страница 10

 
Реter Konow:

А изменения в таблице где? Она перерисовывается?

да постоянно перерисовывается

в общем без паузы скриптом бросал 3 теста

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) № 1: loops=1000 ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) № 2: loops=10000 ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) № 3: loops=100000 ms=35812

1000 - 100 000 перисовок и обновлений значений.... удивительно, но .Net + WinForm довольно производительная даже для таких непонятных задач, ничего не лагает даже на ноуте 

#import "LogToWinForm.dll"
#import

double price[20];

#define   SpeedTest(count_x10,msg,EX)        {uint mss=GetTickCount(); ulong count=(ulong)pow(10,count_x10);for(ulong ii=0;ii<count&&!_StopFlag;ii++){EX;} \
                                              printf("%s: loops=%i ms=%u",msg,count,GetTickCount()-mss);}

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
{
   ArrayInitialize(price, 1.0);
   while(!Log::InitForm()) Sleep(200);
   Sleep(1000);

   SpeedTest(3, "№ 1", sendTodl());
   SpeedTest(4, "№ 2", sendTodl());
   SpeedTest(5, "№ 3", sendTodl());
}
//+------------------------------------------------------------------+
void sendTodl()
{
   for(int i = 0; i < 19; i++)
   {
      price[i] = price[i + 1];
   }
   price[19] = NormalizeDouble(price[18] + _Point, _Digits);
   double ask = NormalizeDouble((double)rand() * _Point, _Digits);
   double bid = NormalizeDouble((double)rand() * _Point, _Digits);
   Log::PrintToLog(ask, bid, price);
};
//+------------------------------------------------------------------+

цифры замера скорости ровные, получается что 22 double значения  (double, double double[]) бросить в .dll и обновить полностью WinForms занимает 0.3 мс

UPD: а вот сейчас видно, что при такой скорости обновления нагрузка на процессор присутствует


 
Igor Makanu:

да постоянно перерисовывается

в общем без паузы скриптом бросал 3 теста

2020.03.14 22:21:20.152 tst_T (EURUSD,H1) № 1: loops=1000 ms=360

2020.03.14 22:21:23.558 tst_T (EURUSD,H1) № 2: loops=10000 ms=3406

2020.03.14 22:21:59.366 tst_T (EURUSD,H1) № 3: loops=100000 ms=35812

1000 - 100 000 перисовок и обновлений значений.... удивительно, но .Net + WinForm довольно производительная даже для таких непонятных задач, ничего не лагает даже на ноуте 

цифры замера скорости ровные, получается что 22 double значения  (double, double double[]) бросить в .dll и обновить полностью WinForms занимает 0.3 мс

UPD: а вот сейчас видно, что при такой скорости обновления нагрузка на процессор присутствует


Надо писать в микро-мягкую компанию.))

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



ЗЫ. Постройте эквивалентную таблицу на шарпе. Интересно сравнить нагрузку.

Файлы:
GUI_Expert.ex5  600 kb
 
12 мс будет правильнее
 
Реter Konow:

Надо писать в микро-мягкую компанию.))

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



ЗЫ. Постройте эквивалентную таблицу на шарпе. Интересно сравнить нагрузку.

пишите, но попробуйте 1 млн раз обновить таблицу, при обмене с  Net это заняло  

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) № 4: loops=1000000 ms=322531

обновление же менее 16 мс у меня - писал же выше 0.3 мс

но заметьте, это полностью самостоятельная форма (окно), оно получает все события Win , в общем я то и подписался потестировать - интересно было зависнет .Net при таком обмене и будет ли лагать все

ЗЫ: завтра может на ПК проверю этот скрипт там мощнее чем на ноуте процессор, по крайней мере тестер(оптимизатор) почти в 3 раза быстрее работает чем на ноуте, хотя смысла нет - работает .Net весьма и весьма неплохо

 
Igor Makanu:

пишите, но попробуйте 1 млн раз обновить таблицу, при обмене с  Net это заняло  

2020.03.14 23:22:24.039 tst_T (EURUSD,H1) № 4: loops=1000000 ms=322531

но заметьте, это полностью самостоятельная форма (окно), оно получает все события Win , в общем я то и подписался потестировать - интересно было зависнет .Net при таком обмене и будет ли лагать все

ЗЫ: завтра может на ПК проверю этот скрипт там мощнее чем на ноуте процессор, по крайней мере тестер(оптимизатор) почти в 3 раза быстрее работает чем на ноуте, хотя смысла нет - работает .Net весьма и весьма неплохо

А зачем ее миллион раз обновлять? Нам бы подешевле обновлять таблицу в режиме реального времени на частоте 16 мс. Остальное лишнее, так как событийная модель быстрее не работает. Речь о нагрузке при перерисовке.

 
Реter Konow:

А зачем ее миллион раз обновлять? Нам бы подешевле обновлять таблицу в режиме реального времени на частоте 16 мс. Остальное лишнее, так как событийная модель быстрее не работает. Речь о нагрузке при перерисовке.

затем что есть куда стремиться

ЗЫ: поставил паузу в 16 мс, дык процессор в пике только 1,5% нагружается, вот поймал момент, и заметь процессор ноута!

ладно, спорить совсем не интересно, интересно было возможности MQL5 + .Net проверить - очень круто все работает!

 
Igor Makanu:

затем что есть куда стремиться

ЗЫ: поставил паузу в 16 мс, дык процессор в пике только 1,5% нагружается, вот поймал момент, и заметь процессор ноута!

ладно, спорить совсем не интересно, интересно было возможности MQL5 + .Net проверить - очень круто все работает!

Так мы и не проверили. То есть, не сравнили. Нужно создать две аналогичные таблицы - на МКЛ и на Шарпе и посмотреть какую нагрузку дает каждая при перерисовке своих ячеек на частоте 16 мс. На МКЛ таблицу я предоставил. Теперь, нужна такая же на шарпе. И тогда станет ясно, кто впереди.

Добавлю, что шарповскую таблицу нужно подключить к МТ5 через длл и тогда сравнить.

 
Реter Konow:

Так мы и не проверили. То есть, не сравнили. Нужно создать две аналогичные таблицы - на МКЛ и на Шарпе и посмотреть какую нагрузку дает каждая при перерисовке своих ячеек на частоте 16 мс. На МКЛ таблицу я предоставил. Теперь, нужна такая же на шарпе. И тогда станет ясно, кто впереди.

Добавлю, что шарповскую таблицу нужно подключить к МТ5 через длл и тогда сравнить.

не поведусь - знаю,что ничего не изменится, ну добавится 0.1 мс если пробрасывать 50-100 значений и заполнять их в таблице на 3 колонки

можешь считать, что победил и Майкрософт с их .Net )))

ЗЫ: мне удобно, что код на .Net писал 15 минут, в общей сложности около 50 строк, работает шустро, тормозов не замечено ;)

 
Igor Makanu:

не поведусь - знаю,что ничего не изменится, ну добавится 0.1 мс если пробрасывать 50-100 значений и заполнять их в таблице на 3 колонки

можешь считать, что победил и Майкрософт с их .Net )))

ЗЫ: мне удобно, что код на .Net писал 15 минут, в общей сложности около 50 строк, работает шустро, тормозов не замечено ;)

Победы без боя не бывает...))

Готов поспорить, что скоро по скорости построения GUI я обойду дизайнер шарпа. В разы. 

Сейчас посмотрел его. Он не заточен под скоростное построение. Жаль его...)))

 
Реter Konow:

Сейчас посмотрел его. Он не заточен под скоростное построение. Жаль его...)))

ну ну... ламер ты Петр - причем редкостный )))))

Шарп по скорости работы максимально приближен к С++, разница в производительности, ну максимум 5% и то может не быть разницы в производительности - на С++ долго писать простые задачи, на Net все примитивные задачи в течении часа - максимум дня делаются ;)

хотел уже делами заняться, но добавил в три клика еще 2 столбца, и пробрасываю из MQL5 в .dll теперь 3х50 = 150 double (3 массива по 50)

замерил теперь скорость - причем учти, что теперь и полосы прокрутки то требуют ресурсов - обновляется же полностью WinForm

вот тот же тест до 100 000 обновлений

2020.03.15 00:12:21.812 tst_T (EURUSD,H1) № 1: loops=1000 ms=1610

2020.03.15 00:12:38.382 tst_T (EURUSD,H1) № 2: loops=10000 ms=16562

2020.03.15 00:15:19.642 tst_T (EURUSD,H1) № 3: loops=100000 ms=161250

т.е. WinForm на .Net в окошке с полосами прокрутки и таблицей в 153 ячейки на моем ноуте обновляется за 1.6 мс

Файлы:
MQL5.zip  209 kb