DirectX - Seite 10

 
Реter Konow:

Wo sind die Änderungen in der Tabelle? Wird sie neu gezeichnet?

Ja, es wird immer wieder neu gezeichnet.

im Allgemeinen hat das Skript ohne Pause 3 Tests durchgeführt

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 Schleifen und Wertaktualisierungen.... Erstaunlicherweise ist .Net + WinForm selbst für solch obskure Aufgaben recht produktiv, selbst auf meinem Laptop lahmt nichts

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

Geschwindigkeit Zahlen sind auch, es stellt sich heraus, dass 22 Double-Werte (double, double double double[]) in .dll gegossen und aktualisieren vollständig WinForms dauert 0,3 ms

UPD: jetzt können Sie sehen, dass bei dieser Aktualisierungsgeschwindigkeit die Belastung des Prozessors vorhanden ist


 
Igor Makanu:

Es wird immer wieder neu gezeichnet.

im Allgemeinen hat das Skript ohne Pause 3 Tests durchgeführt

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 Schleifen und Wertaktualisierungen.... Erstaunlicherweise ist .Net + WinForm selbst für solch obskure Aufgaben recht produktiv, selbst auf meinem Laptop lahmt nichts

Geschwindigkeit Zahlen sind auch, es stellt sich heraus, dass 22 Double-Werte (double, double double double[]) in .dll gegossen und aktualisieren vollständig WinForms dauert 0,3 ms

UPD: jetzt können Sie sehen, dass eine solche Geschwindigkeit der Aktualisierung die CPU belastet


Ich muss an die Firma Microsoft schreiben.))

Sie haben eine höhere Anzahl von Tabellenaktualisierungen als ich. Stellen Sie die Aktualisierung alle 16ms ein.



ZS. Erstellen Sie eine entsprechende Tabelle auf Sharpe. Es ist interessant, die Belastung zu vergleichen.

Dateien:
GUI_Expert.ex5  600 kb
 
12 ms wäre korrekter
 
Реter Konow:

Ich muss an die Firma Micro-Soft schreiben.))

Sie haben eine größere Anzahl von Tabellenaktualisierungen als ich. Stellen Sie die Auffrischung auf alle 16 ms ein.



ZS. Erstellen Sie eine entsprechende Tabelle auf Sharpe. Es ist interessant, die Belastung zu vergleichen.

Schreiben, aber 1 Million Mal versuchen, die Tabelle zu aktualisieren, beim Austausch mit Net dauerte es

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

die Aktualisierung beträgt bei mir weniger als 16 ms - ich schrieb über 0,3 ms

Aber beachten Sie, dass dies eine völlig unabhängige Form (Fenster) ist, bekommt es alle Win-Ereignisse, so wollte ich es zu testen - ich wunderte mich, wenn die .Net hängt auf einem solchen Austausch und verzögert alles

ZS: morgen vielleicht auf dem PC zu überprüfen, dieses Skript gibt es leistungsfähiger als der Laptop-Prozessor, zumindest der Tester (der Optimierer) ist fast 3 mal schneller als auf einem Laptop, obwohl es keinen Sinn macht - läuft .Net ist sehr, sehr gut

 
Igor Makanu:

schreiben, aber 1 Million Mal versuchen, die Tabelle zu aktualisieren, beim Austausch mit Net dauerte es

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

Aber beachten Sie, dass dies ein völlig unabhängiges Formular (Fenster) ist, empfängt es alle Win-Ereignisse, im Allgemeinen, wollte ich es zu testen - es war interessant, ob Net würde bei einem solchen Austausch einfrieren und ob alles verzögert

SZS: morgen vielleicht auf dem PC zu überprüfen, dieses Skript gibt es leistungsfähiger als der Laptop-Prozessor, zumindest der Tester (der Optimierer) ist fast 3-mal schneller als auf einem Laptop, obwohl es keinen Sinn - läuft .Net ist sehr, sehr gut

Und warum sollte man sie eine Million Mal aktualisieren? Es wäre billiger, die Tabelle in Echtzeit mit 16 ms zu aktualisieren. Der Rest ist unnötig, weil das Ereignismodell nicht schneller ist. Es geht um die Belastung bei der Neuberechnung.

 
Реter Konow:

Warum sollte man sie eine Million Mal aktualisieren? Es wäre billiger für uns, die Tabelle in Echtzeit mit 16 ms zu aktualisieren. Der Rest ist unnötig, weil das Ereignismodell nicht schneller ist. Wir sprechen hier von der Umzugslast.

Es gibt also eine Menge zu tun.

ZS: setzen Sie die Pause bei 16 ms, gut, der Prozessor in der Spitze ist nur 1,5% der Last, hier fangen den Moment, und beachten Sie die Prozessor des Laptops!

Ich bin nicht an Argumenten interessiert, ich wollte nur die Fähigkeiten von MQL5 + .Net testen - alles funktioniert sehr gut!

 
Igor Makanu:

dann gibt es etwas, das man anstreben kann.

SZY: legen Sie eine Pause bei 16 ms, der Prozessor ist nur 1,5% der Last in der Spitze, hier ist der Moment, und beachten Sie die Prozessor des Laptops!

Es war interessant, die Möglichkeiten von MQL5 + .Net zu testen - alles funktioniert sehr gut!

Wir haben es also nicht überprüft. Das heißt, wir haben sie nicht miteinander verglichen. Ich habe zwei analoge Tabellen erstellt - in MCL und Sharp - und schaue mir an, welche Last jede von ihnen erzeugt, wenn sie ihre Zellen bei 16 msec neu zeichnen. Zu MKL habe ich eine Tabelle erstellt. Jetzt brauchen wir das Gleiche bei Sharpe. Und dann wird sich zeigen, wer die Nase vorn hat.

Ich füge hinzu, dass die scharfe Tabelle mit MT5 über dll verbunden werden sollte und dann zu vergleichen.

 
Реter Konow:

Also haben wir nicht nachgesehen. Das heißt, wir haben nicht verglichen. Wir müssen zwei ähnliche Tabellen erstellen - auf MKL und auf Sharp - und sehen, welche Last jede davon erzeugt, wenn sie ihre Zellen mit 16 ms neu zeichnet. Zu MKL habe ich eine Tabelle erstellt. Jetzt brauchen wir das Gleiche bei Sharpe. Und dann wird sich zeigen, wer die Nase vorn hat.

Ich werde hinzufügen, dass scharfe Tabelle sollte MT5 durch dll verbunden werden und dann vergleichen.

Ich kaufe es nicht - ich weiß, dass sich nichts ändern wird, nun, 0,1ms werden hinzugefügt, wenn Sie 50-100 Werte öffnen und sie in die Tabelle für 3 Spalten eintragen

können Sie davon ausgehen, dass Sie Microsoft und sein .Net )))) besiegt haben.

ZS: Ich bin zufrieden, dass ich für den Code auf .Net 15 Minuten gebraucht habe, um ihn zu schreiben, etwa 50 Zeilen insgesamt, er funktioniert schnell, keine Lags bemerkt ;)

 
Igor Makanu:

Ich kaufe es nicht - ich weiß, dass sich nichts ändern wird, nun, 0,1 ms werden hinzugefügt, wenn man 50-100 Werte sendet und sie in die Tabelle in 3 Spalten einträgt

können Sie davon ausgehen, dass Sie Microsoft und sein .Net )))) besiegt haben.

SZZY: Ich bin zufrieden, ich habe 15 Minuten gebraucht, um den .Net-Code zu schreiben, etwa 50 Zeilen insgesamt, funktioniert schnell, keine Lags bemerkt ;)

Es gibt keinen Sieg ohne Kampf...))

Ich bin bereit zu wetten, dass ich Sharps GUI Designer bald in der Geschwindigkeit der GUI-Erstellung übertreffen werde. Mit Riesenschritten.

Ich habe es im Moment überprüft. Es ist nicht für schnelle Builds ausgelegt. Schade um ihn...)))

 
Реter Konow:

Ich habe es mir gerade angeschaut. Er ist nicht in der Lage, die Geschwindigkeit zu erhöhen. Er tut mir leid...))

Na ja... du bist ein Lahmarsch Peter - und ein seltener dazu )))))

Sharp ist maximal nahe an C++, der Unterschied in der Produktivität, naja, maximal 5% und dann gibt es vielleicht keinen Unterschied in der Produktivität - es dauert lange, einfache Aufgaben in C++ zu schreiben, in Net sind alle primitiven Aufgaben innerhalb einer Stunde - maximal eines Tages - erledigt ;)

Ich war im Begriff, zur Arbeit zu gehen, aber ich habe 2 weitere Spalten in drei Klicks hinzugefügt und von MQL5 zu .dll jetzt 3x50 = 150 double (3 Arrays von 50) weitergeleitet

gemessen an der Geschwindigkeit - und bedenken Sie, dass die Bildlaufleisten jetzt Ressourcen benötigen - vollständig aktualisierte WinForm

Hier ist der gleiche Test vor 100 000 Aktualisierungen

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

z.B. WinForm auf .Net in dem Fenster mit Bildlaufleisten und einer Tabelle mit 153 Zellen auf meinem Laptop wird in 1,6 ms aktualisiert

Dateien:
MQL5.zip  209 kb