DirectX - pagina 10

 
Реter Konow:

Dove sono i cambiamenti nella tabella? È ridisegnato?

Sì, ridisegna tutto il tempo.

in generale senza pausa lo script ha lanciato 3 test

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 cicli e aggiornamenti di valore.... Incredibilmente, .Net + WinForm è abbastanza produttivo anche per tali compiti oscuri, niente lag anche sul mio portatile

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

le cifre della velocità sono pari, risulta che 22 valori doppi (doppio, doppio doppio doppio[]) cast in .dll e aggiornamento completamente WinForms richiede 0,3 ms

UPD: e ora si può vedere che a questa velocità di aggiornamento il carico sulla CPU è presente


 
Igor Makanu:

Continua a ridisegnare.

in generale senza pausa lo script ha lanciato 3 test

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 cicli e aggiornamenti di valore.... Incredibilmente, .Net + WinForm è abbastanza produttivo anche per tali compiti oscuri, niente lag anche sul mio portatile

le cifre della velocità sono pari, risulta che 22 valori doppi (doppio, doppio doppio doppio[]) cast in .dll e aggiornamento completamente WinForms richiede 0,3 ms

UPD: ora potete vedere che tale velocità di aggiornamento pone un carico sulla CPU


Ho bisogno di scrivere alla società microsoft)).

Hanno un carico maggiore di aggiornamenti delle tabelle rispetto a me. Mettete il refresh ogni 16ms.



ZS. Costruire una tabella equivalente su Sharpe. Interessante confrontare il carico.

File:
GUI_Expert.ex5  600 kb
 
12 ms sarebbe più corretto
 
Реter Konow:

Devo scrivere alla società micro-soft)).

Hanno un carico di aggiornamenti dei tavoli più pesante del mio. Impostatelo per aggiornare ogni 16ms.



ZS. Costruire una tabella equivalente su Sharpe. Interessante confrontare il carico.

Scrivi, ma prova 1 milione di volte ad aggiornare la tabella, quando si scambia con Net ci sono voluti

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

l'aggiornamento è meno di 16 ms a me - ho scritto sopra 0,3 ms

Ma notate che questo è un modulo completamente indipendente (finestra), riceve tutti gli eventi Win, quindi volevo testarlo - mi chiedevo se il .Net si blocca su un tale scambio e ritarda tutto

ZS: domani forse sul PC per controllare questo script c'è più potente del processore del portatile, almeno il tester (ottimizzatore) è quasi 3 volte più veloce che su un portatile, anche se non ha senso - l'esecuzione di .Net è molto, molto buona

 
Igor Makanu:

scrivere, ma provare 1 milione di volte ad aggiornare la tabella, quando lo scambio con Net ha preso

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

Ma si noti che questo è un modulo completamente indipendente (finestra), riceve tutti gli eventi di Win, in generale, ho voluto testarlo - era interessante se Net si bloccava a tale scambio e se tutto ritardava

SZS: domani forse sul PC per controllare questo script c'è più potente del processore del portatile, almeno il tester (l'ottimizzatore) è quasi 3 volte più veloce che su un portatile, anche se non c'è punto - l'esecuzione di .Net è molto, molto buono

E perché aggiornarlo un milione di volte? Sarebbe più economico aggiornare la tabella in tempo reale a 16 ms. Il resto non è necessario perché il modello degli eventi non è più veloce. Si tratta del carico di ridisegno.

 
Реter Konow:

Perché aggiornarlo un milione di volte? Sarebbe più conveniente per noi aggiornare la tabella in tempo reale a 16ms. Il resto non è necessario perché il modello degli eventi non è più veloce. Stiamo parlando del carico di ridisegno.

Quindi c'è molto per cui lottare.

ZS: mettere la pausa a 16 ms, bene, il processore al picco è solo l'1,5% del carico, ecco cogliere l'attimo, e notare il processore del portatile!

Non mi interessano le discussioni, volevo solo verificare le capacità di MQL5 + .Net - tutto funziona molto bene!

 
Igor Makanu:

allora c'è qualcosa per cui lottare.

SZY: metti una pausa a 16 ms, il processore è solo 1,5% del carico al picco, ecco il momento, e nota il processore del portatile!

È stato interessante verificare le capacità di MQL5 + .Net - tutto funziona molto bene!

E così non abbiamo controllato. Cioè, non li abbiamo confrontati. Ho creato due tabelle analoghe - in MCL e Sharp e ho dato un'occhiata a quale carico è dato da ciascuno di essi quando si ridisegnano le loro celle a 16 msec. Su MKL ho fornito una tabella. Ora, abbiamo bisogno dello stesso su Sharpe. E allora sarà chiaro chi è in vantaggio.

Dovrei aggiungere che la tabella Sharpe dovrebbe essere collegata a MT5 tramite dll e poi confrontare.

 
Реter Konow:

Quindi non abbiamo controllato. Cioè, non abbiamo confrontato. Dobbiamo creare due tabelle simili - su MKL e su Sharp e vedere che carico dà ciascuna quando ridisegna le sue celle a 16ms. Su MKL ho fornito una tabella. Ora, abbiamo bisogno dello stesso su Sharpe. E allora sarà chiaro chi è in vantaggio.

Aggiungo che la tabella nitida dovrebbe essere collegata a MT5 tramite dll e poi confrontare.

Non me la bevo - so che non cambierà nulla, beh, 0.1ms saranno aggiunti se aprite 50-100 valori e li riempite nella tabella per 3 colonne

potete considerare di aver sconfitto Microsoft e il loro .Net ))))

ZS: sono tranquillo che il codice su .Net mi ha preso 15 minuti per scrivere, circa 50 linee in totale, funziona velocemente, nessun lag notato ;)

 
Igor Makanu:

Non me la bevo - so che non cambierà nulla, beh, 0,1 ms saranno aggiunti quando si inviano 50-100 valori e li si riempie nella tabella in 3 colonne

potete considerare di aver sconfitto Microsoft e il loro .Net ))))

SZZY: sono tranquillo, ci ho messo 15 minuti a scrivere il codice .Net, circa 50 linee in totale, funziona velocemente, nessun lag notato ;)

Non c'è vittoria senza lotta...))

Sono pronto a scommettere che presto batterò il GUI designer di Sharp nella velocità di costruzione delle GUI. A passi da gigante.

L'ho controllato al momento. Non è predisposto per le costruzioni veloci. Peccato per lui...)))

 
Реter Konow:

Ho appena dato un'occhiata. Non si è messo a terra nella costruzione della velocità. Peccato per lui...))

Bene... sei un lamer Peter - e uno raro )))))

Sharp è al massimo vicino al C++, la differenza di produttività, beh, al massimo il 5% e poi potrebbe non esserci alcuna differenza di produttività - ci vuole molto tempo per scrivere compiti semplici su C++, su Net tutti i compiti primitivi sono fatti entro un'ora - massimo giorno ;)

Stavo per darmi da fare, ma ho aggiunto altre 2 colonne in tre clic e sono passato da MQL5 a .dll 3x50 = 150 doppie (3 matrici di 50)

misurato la velocità ora - e tenete presente che le barre di scorrimento ora richiedono risorse - WinForm completamente aggiornato

Ecco lo stesso test prima di 100 000 aggiornamenti

2020.03.15 00:12:21.812 tst_T (EURUSD,H1) no1: 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

cioè WinForm su .Net nella finestra con barre di scorrimento e tabella di 153 celle sul mio portatile si aggiorna in 1,6 ms

File:
MQL5.zip  209 kb
Motivazione: