DirectX - page 10

 
Реter Konow:

Où sont les changements dans le tableau ? Est-il redessiné ?

Oui, il redessine tout le temps.

en général sans pause le script a lancé 3 tests

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 boucles et mises à jour des valeurs.... étonnamment, .Net + WinForm est tout à fait productif même pour des tâches aussi obscures, rien ne traîne, même sur mon ordinateur portable.

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

les chiffres de vitesse sont égaux, il s'avère que 22 valeurs doubles (double, double double[]) cast dans .dll et mise à jour complètement WinForms prend 0.3 ms

UPD : et maintenant vous pouvez voir qu'à cette vitesse de mise à jour la charge sur le CPU est présente.


 
Igor Makanu:

Ça continue de se redessiner.

en général sans pause le script a lancé 3 tests

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 boucles et mises à jour des valeurs.... étonnamment, .Net + WinForm est tout à fait productif même pour des tâches aussi obscures, rien ne traîne, même sur mon ordinateur portable.

les chiffres de vitesse sont égaux, il s'avère que 22 valeurs doubles (double, double double[]) cast dans .dll et mise à jour complètement WinForms prend 0.3 ms

UPD : maintenant vous pouvez voir qu'une telle vitesse de mise à jour charge le CPU.


Je dois écrire à la société microsoft.))

Ils ont une plus grande charge de mises à jour de tables que moi. Mettez le rafraîchissement toutes les 16ms.



ZS. Construire une table équivalente sur le sharpe. Intéressant de comparer la charge.

Dossiers :
GUI_Expert.ex5  600 kb
 
12 ms serait plus correct
 
Реter Konow:

Je dois écrire à la société micro-soft.))

Ils ont une charge de mise à jour des tables plus lourde que la mienne. Réglez-le pour qu'il se rafraîchisse toutes les 16 ms.



ZS. Construire une table équivalente sur le sharpe. Intéressant de comparer la charge.

Écrire, mais essayer 1 million de fois de rafraîchir la table, lors de l'échange avec Net il a fallu

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

la mise à jour est inférieure à 16 ms chez moi - j'ai écrit plus de 0,3 ms

Mais notez qu'il s'agit d'un formulaire (fenêtre) complètement indépendant, qui reçoit tous les événements Win, et je voulais donc le tester - je me demandais si le .Net ne se bloquait pas sur un tel échange et n'était pas à la traîne.

ZS : demain peut-être sur le PC pour vérifier ce script il ya plus puissant que le processeur de l'ordinateur portable, au moins le testeur (optimiseur) est presque 3 fois plus rapide que sur un ordinateur portable, bien que cela n'a aucun sens - en cours d'exécution .Net est très, très bon

 
Igor Makanu:

écrire, mais essayer 1 million de fois de mettre à jour la table, lors de l'échange avec Net il a fallu

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

Mais notez que c'est un formulaire (fenêtre) complètement indépendant, il reçoit tous les événements Win, en général, je voulais le tester - il était intéressant de savoir si Net se figeait à un tel échange et si tout est décalé

SZS : demain peut-être sur le PC pour vérifier ce script il ya plus puissant que le processeur de l'ordinateur portable, au moins le testeur (l'optimiseur) est presque 3 fois plus rapide que sur un ordinateur portable, bien qu'il n'y ait pas de point - en cours d'exécution .Net est très, très bon

Et pourquoi le mettre à jour un million de fois ? Il serait plus économique de mettre à jour la table en temps réel à 16 ms. Le reste est inutile car le modèle d'événement n'est pas plus rapide. Il s'agit de la charge de redécoupage.

 
Реter Konow:

Pourquoi le mettre à jour un million de fois ? Il serait plus économique pour nous de mettre à jour la table en temps réel à 16ms. Le reste est inutile car le modèle d'événement n'est pas plus rapide. Nous parlons de la charge de redécoupage.

Il y a donc beaucoup d'objectifs à atteindre.

ZS : mettez la pause à 16 ms, eh bien, le processeur au pic n'est qu'à 1,5% de la charge, voilà qui rattrape le moment, et remarquez le processeur de l'ordinateur portable !

Je ne suis pas intéressé par les arguments, je voulais juste vérifier les capacités de MQL5 + .Net - tout fonctionne très bien !

 
Igor Makanu:

alors il y a un objectif à atteindre.

SZY : mettez une pause à 16 ms, le processeur n'est qu'à 1,5% de la charge au pic, voici le moment, et notez le processeur de l'ordinateur portable !

Il était intéressant de vérifier les capacités de MQL5 + .Net - tout fonctionne très bien !

Et donc nous ne l'avons pas vérifié. C'est-à-dire que nous ne les avons pas comparés. J'ai créé deux tableaux analogues - en MCL et Sharp et j'ai regardé quelle charge est donnée par chacun d'entre eux lors du redessin de leurs cellules à 16 msec. Sur MKL, j'ai fourni un tableau. Maintenant, nous avons besoin de la même chose sur Sharpe. Et alors, il sera clair qui est en tête.

Je dois ajouter que la table Sharpe doit être connectée à MT5 via une dll et ensuite comparer.

 
Реter Konow:

Donc nous n'avons pas vérifié. C'est-à-dire que nous n'avons pas comparé. Nous devons créer deux tableaux similaires - sur MKL et sur Sharp et voir quelle charge chacun d'eux donne lors du redessin de ses cellules à 16ms. Sur MKL, j'ai fourni un tableau. Maintenant, nous avons besoin de la même chose sur Sharpe. Et alors, il sera clair qui est en tête.

J'ajouterai qu'il faut connecter la table sharp à MT5 via une dll et ensuite comparer.

Je n'y crois pas - je sais que rien ne changera, mais 0,1ms sera ajouté si vous ouvrez 50-100 valeurs et les remplissez dans le tableau à 3 colonnes.

vous pouvez considérer que vous avez vaincu Microsoft et son .Net )))).

ZS : Je peux affirmer que le code sur .Net m'a pris 15 minutes à écrire, environ 50 lignes au total, et qu'il fonctionne rapidement, sans aucun décalage.)

 
Igor Makanu:

Je n'y crois pas - je sais que rien ne changera, eh bien, 0,1 ms sera ajouté lorsque vous enverrez 50-100 valeurs et les remplirez dans le tableau en 3 colonnes.

vous pouvez considérer que vous avez vaincu Microsoft et son .Net )))).

SZZY : Je suis à l'aise, il m'a fallu 15 minutes pour écrire le code .Net, environ 50 lignes au total, il fonctionne rapidement, sans aucun décalage ;)

Il n'y a pas de victoire sans combat...))

Je suis prêt à parier que bientôt je battrai le concepteur de GUI de Sharp en vitesse de construction de GUI. A pas de géant.

Je l'ai vérifié en ce moment. Il n'est pas conçu pour les constructions rapides. Dommage pour lui...)))

 
Реter Konow:

Je viens d'y jeter un coup d'oeil. Il n'est pas ancré dans la construction de la vitesse. Pitié pour lui...))

Eh bien... vous êtes un lamer Peter - et un rare en cela )))))

Sharp est très proche de C++, la différence de productivité, eh bien, maximum 5% et alors il peut n'y avoir aucune différence de productivité - il faut beaucoup de temps pour écrire des tâches simples sur C++, sur Net toutes les tâches primitives sont faites dans une heure - maximum jour ;)

J'étais sur le point d'être occupé, mais j'ai ajouté 2 colonnes supplémentaires en trois clics et suis passé de MQL5 à .dll 3x50 = 150 double (3 tableaux de 50)

mesuré la vitesse maintenant - et gardez à l'esprit que les barres de défilement nécessitent maintenant des ressources - WinForm complètement mis à jour

Voici le même test avant 100 000 mises à jour

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

Par exemple, WinForm sur .Net dans la fenêtre avec des barres de défilement et un tableau de 153 cellules sur mon ordinateur portable se met à jour en 1,6 ms.

Dossiers :
MQL5.zip  209 kb