DirectX - página 10

 
Реter Konow:

¿Dónde están los cambios en la tabla? ¿Está redibujado?

Sí, se redibuja todo el tiempo.

en general sin pausa el script arrojó 3 pruebas

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 bucles y actualizaciones de valores.... sorprendentemente, .Net + WinForm es bastante productivo incluso para tareas tan oscuras, nada se retrasa incluso en mi portátil

#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);
};
//+------------------------------------------------------------------+

las cifras de velocidad son parejas, resulta que 22 valores dobles (double, double double[]) fundidos en .dll y actualizados completamente WinForms tardan 0.3 ms

UPD: ahora se puede ver que a esta velocidad de actualización la carga en el procesador está presente


 
Igor Makanu:

Se sigue redibujando.

en general sin pausa el script arrojó 3 pruebas

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 bucles y actualizaciones de valores.... sorprendentemente, .Net + WinForm es bastante productivo incluso para tareas tan oscuras, nada se retrasa incluso en mi portátil

las cifras de velocidad son uniformes, resulta que 22 valores dobles (double, double double[]) fundidos en .dll y actualizados completamente WinForms tardan 0,3 ms

UPD: ahora se puede ver que tal velocidad de actualización pone la carga en la CPU


Tengo que escribir a la empresa Microsoft)).

Tienen una mayor carga de actualizaciones de tablas que yo. Poner el refresco cada 16ms.



ZS. Construye una tabla equivalente en Sharpe. Es interesante comparar la carga.

Archivos adjuntos:
GUI_Expert.ex5  600 kb
 
12 ms sería más correcto
 
Реter Konow:

Tengo que escribir a la empresa micro-soft).

Tienen una carga más pesada de actualizaciones de la mesa que yo. Ajústalo para que se actualice cada 16ms.



ZS. Construye una tabla equivalente en Sharpe. Es interesante comparar la carga.

Escriba, pero intente 1 millón de veces para refrescar la tabla, al intercambiar con Net tomó

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

la actualización es menos de 16 ms en mí - escribí por encima de 0,3 ms

Pero ten en cuenta que este es un formulario (ventana) completamente independiente, recibe todos los eventos de Win, por lo que quería probarlo - me preguntaba si el .Net se cuelga en tal intercambio y se retrasa todo

ZS: mañana tal vez en el PC para comprobar esta secuencia de comandos allí más potente que el procesador del ordenador portátil, por lo menos el probador (el optimizador) es casi 3 veces más rápido que en un ordenador portátil, aunque no tiene sentido - corriendo .Net es muy, muy bueno

 
Igor Makanu:

escribir, pero intentar 1 millón de veces actualizar la tabla, al intercambiar con Net tardó

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

Pero tenga en cuenta que esta es una forma completamente independiente (ventana), recibe todos los eventos de Win, en general, quería probarlo - era interesante si Net se congelaría en tal intercambio y si todo se retrasa

SZS: mañana tal vez en el PC para comprobar esta secuencia de comandos no más potente que el procesador del ordenador portátil, por lo menos el probador (el optimizador) es casi 3 veces más rápido que en un ordenador portátil, aunque no tiene sentido - corriendo .Net es muy, muy bueno

¿Y por qué actualizarlo un millón de veces? Sería más barato actualizar la tabla en tiempo real a 16 ms. El resto es innecesario porque el modelo de eventos no es más rápido. Se trata de la carga en el redibujado.

 
Реter Konow:

¿Por qué actualizarlo un millón de veces? Nos saldría más barato actualizar la tabla en tiempo real a 16ms. El resto es innecesario porque el modelo de eventos no es más rápido. Estamos hablando de la carga de redistribución.

Así que hay mucho por lo que esforzarse.

ZS: pon la pausa a 16 ms, pues bien, el procesador en el pico es sólo el 1,5% de la carga, aquí está cogiendo el momento, ¡y fíjate en el procesador del portátil!

No me interesan las discusiones, sólo quería comprobar las capacidades de MQL5 + .Net - ¡todo funciona muy bien!

 
Igor Makanu:

entonces hay algo por lo que esforzarse.

SZY: pon una pausa a los 16 ms, el procesador es sólo el 1,5% de la carga en el pico, aquí está el momento, ¡y fíjate en el procesador del portátil!

Fue interesante comprobar las capacidades de MQL5 + .Net - ¡todo funciona muy bien!

Y por eso no lo hemos comprobado. Es decir, no los hemos comparado. He creado dos tablas análogas - en MCL y en Sharp y he mirado qué carga da cada una de ellas al redibujar sus celdas a 16 mseg. En MKL he proporcionado una tabla. Ahora, necesitamos lo mismo con Sharpe. Y entonces quedará claro quién va por delante.

Debo añadir que la tabla de Sharpe debe conectarse a MT5 a través de dll y luego comparar.

 
Реter Konow:

Así que no lo comprobamos. Es decir, no hemos comparado. Tenemos que crear dos tablas similares - en MKL y en Sharp y ver qué carga da cada una al redibujar sus celdas a 16ms. En MKL he proporcionado una tabla. Ahora, necesitamos lo mismo con Sharpe. Y entonces quedará claro quién va por delante.

Añadiré que la tabla afilada debe estar conectada a MT5 a través de la dll y luego comparar.

No me lo creo - sé que no cambiará nada, bueno, se añadirán 0,1ms si se tiran 50-100 valores y se rellenan en la tabla de 3 columnas

puede considerar que ha derrotado a Microsoft y a su .Net ))))

ZS: Me siento cómodo porque el código en .Net me ha llevado 15 minutos escribirlo, unas 50 líneas en total, funciona rápido, no se notan lags ;)

 
Igor Makanu:

No me lo creo - sé que no cambiará nada, bueno, se añadirán 0,1 ms cuando envíes 50-100 valores y los rellenes en la tabla en 3 columnas

puede considerar que ha derrotado a Microsoft y su .Net ))))

SZZY: Me siento cómodo, he tardado 15 minutos en escribir el código .Net, unas 50 líneas en total, funciona rápido, no se notan lags ;)

No hay victoria sin lucha...))

Estoy dispuesto a apostar que pronto superaré al diseñador de GUI de Sharp en velocidad de construcción de GUI. A pasos agigantados.

Lo he comprobado en este momento. No está preparada para construcciones rápidas. Lástima de él...))

 
Реter Konow:

Acabo de echarle un vistazo. No se basa en la construcción de la velocidad. Lástima de él...))

Bueno... eres un cojo Peter - y uno raro en eso )))))

Sharp se acerca al máximo a C++, la diferencia en productividad, bueno, máximo 5% y luego puede no haber diferencia en productividad - se necesita mucho tiempo para escribir tareas simples en C++, en Net todas las tareas primitivas se hacen en una hora - máximo día ;)

Estaba a punto de ir a trabajar, pero he añadido 2 columnas más en tres clics y reenviado de MQL5 a .dll ahora 3x50 = 150 doble (3 matrices de 50)

medido la velocidad ahora - y tenga en cuenta que las barras de desplazamiento ahora requieren recursos - completamente actualizado WinForm

aquí está la misma prueba antes de las 100 000 actualizaciones

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) no.2: loops=10000 ms=16562

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

es decir, WinForm en .Net en la ventana con barras de desplazamiento y tabla de 153 celdas en mi portátil se actualiza en 1,6 ms

Archivos adjuntos:
MQL5.zip  209 kb