À propos du profileur de code MT5 - page 6

 
fxsaber #:

Je ne comprends pas pourquoi les 45% de cordes et le reste ne sont pas pris en compte ?

Ils comprennent ces fonctions natives, dont j'ai parlé de la charge.

RefreshHistory se compose de HistorySelect et HistoryOrderGet, GetHistoryPositionData - à partir de ceux-ci + HistoryDealGet.

Il est également utile de parcourir le code avec vos yeux et d'analyser les lignes les plus rouges. Cependant, ils ne sont pas toujours mis en évidence, si le code est légèrement plus complexe qu'une feuille.

 
fxsaber #:

29,41% (la raison n'est pas claire) est dû à une fourchette de fermeture après le retour. Difficile à interpréter.

Suppression des variables de fonctions locales, des objets locaux, etc.

Ceci est fait après tout retour de la fonction.

 
Andrey Khatimlianskii #:

Suppression des variables de fonctions locales, des objets locaux, etc.

Cette opération est effectuée après tout retour de la fonction.

Il n'y a que trois variables ulong.

 
fxsaber #:

J'ai ajouté une répétition de 20x sur la grande histoire.

29,41% (on ne sait pas pourquoi) est dû à une parenthèse fermante dans la méthode déjà après return. Difficile à interpréter.

Que contient le rapport pour cette fonction ?

S'il vous plaît, montrez-moi

 
Ilyas #:

Que contient le rapport pour cette fonction ?

S'il vous plaît, montrez-moi

Rapport du profileur MQL - \MQL5\Experts\Test19.mq5
Fonction Ligne Total CPU Pourcentage Self CPU Pourcentage
MT4ORDERS::GetHistoryPositionData 1093 701
85.38%
260
31.67%
} 1360 157
21.96%
157
60.38%
static void GetHistoryPositionData( const ulong Ticket ) 1093 46
6.43%
46
17.69%
const string StrComment = ::HistoryDealGetString(OpenTicket, DEAL_COMMENT) ; 1178 23
3.22%
11
4.23%
MT4ORDERS::Order.Comment = ::HistoryDealGetString(Ticket, DEAL_COMMENT) ; 1107 20
2.80%
10
3.85%


Je ne suis pas sûr que cette information soit nécessaire. Malheureusement, je ne comprends pas encore très bien les chiffres. J'aimerais le comprendre.


SZY Il y a deux lignes dans le tableau ci-dessus avec la même Line=1093. Peut-être quelles données de lecture fournir dans le MP ?

 
fxsaber #:

Il n'y a que trois variables ulong.

Et tous ceux qui sont appelés à partir de cette fonction.

Le temps d'exécution de la fonction A contient le temps d'exécution de toutes les fonctions B, qui sont appelées à partir de A. Sauf lorsque B est appelé d'un autre endroit (alors seule une partie du temps de B ira à A).

 
Andrey Khatimlianskii #:

Et tout ce qui est appelé à partir de cette fonction.

Le temps d'exécution de la fonction A contient le temps d'exécution de toutes les fonctions B, qui sont appelées à partir de A. Sauf lorsque B est appelé d'un autre endroit (alors seule une partie du temps de B va à A).

Je voulais dire le crochet de fermeture.

 
fxsaber #:

Je voulais dire la parenthèse fermante.

C'est ce que je voulais dire.)

Peut-être que je comprends mal quelque chose moi-même.

 

Journal du testeur (sans visualisation) après l'exécution du profileur.

2021.11.08 03:21:54.358 Core 1  EURUSD,M1: 6820008 ticks, 258262 bars generated. Environment synchronized in 0:00:00.018. Test passed in 0:00:22.853 (including ticks preprocessing 0:00:01.219).
2021.11.08 03:21:54.358 Core 1  EURUSD,M1: total time from login to stop testing 0:00:22.871 (including 0:00:00.018 for history data synchronization)
2021.11.08 03:21:54.358 Core 1  disconnected
2021.11.08 03:21:54.358 Core 1  1578 Mb memory used including 24 Mb of history data, 192 Mb of tick data


Immédiatement après, on appuie à la main sur le bouton Start du testeur.

2021.11.08 03:23:00.166 Core 1  EURUSD,M1: 6820008 ticks, 258262 bars generated. Environment synchronized in 0:00:00.029. Test passed in 0:00:07.548 (including ticks preprocessing 0:00:01.203).
2021.11.08 03:23:00.166 Core 1  EURUSD,M1: total time from login to stop testing 0:00:07.577 (including 0:00:00.029 for history data synchronization)
2021.11.08 03:23:00.166 Core 1  444 Mb memory used including 24 Mb of history data, 192 Mb of tick data


  1. Pourquoi le temps d'exécution est-il trois fois plus long pendant le profilage ?
  2. Pourquoi la consommation de mémoire est-elle trois fois plus élevée pendant le profilage ?
 

Le profileur montre des appels de fonction qui n'ont pas eu lieu en réalité. Je suis même tombé sur quelque chose comme ça :

Une sorte de ArrayCopy, qui n'est pas dans la source du fichier mqh! J'ai même tracé une ligne rouge dans la déclaration d'un tableau statique.

Je ne peux toujours pas utiliser le profileur, malheureusement.