Informazioni sul profilatore di codice MT5 - pagina 6

 
fxsaber #:

Solo non capisco perché il 45% di corde e il resto non sono presi in considerazione?

Includono quelle funzioni native, di cui ho scritto il carico.

RefreshHistory consiste in HistorySelect e HistoryOrderGet, GetHistoryPositionData - da loro + HistoryDealGet.

Aiuta anche a scorrere il codice con gli occhi e ad analizzare le linee più rosse. Tuttavia, non sono sempre evidenziati, se il codice è leggermente più complesso di un foglio.

 
fxsaber #:

Il 29,41% (non è chiaro perché) è dovuto a una parentesi di chiusura dopo il ritorno. Difficile da interpretare.

Rimozione di variabili di funzioni locali, oggetti locali, ecc.

Questo viene fatto dopo ogni ritorno dalla funzione.

 
Andrey Khatimlianskii #:

Cancellazione di variabili di funzioni locali, oggetti locali, ecc.

Questo viene fatto dopo qualsiasi ritorno dalla funzione.

Ci sono solo tre variabili ulong.

 
fxsaber #:

Aggiunta una ripetizione 20x sulla grande storia.

Il 29,41% (non è chiaro perché) è dovuto a una parentesi di chiusura nel metodo già dopo il ritorno. Difficile da interpretare.

Cosa c'è nel rapporto di questa funzione?

Puoi per favore mostrarmi

 
Ilyas #:

Cosa c'è nel rapporto di questa funzione?

Per favore mostratemi

Rapporto MQL Profiler - \MQL5\Experts\Test19.mq5
Funzione Linea CPU totale Percentuale Auto CPU Percentuale
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%


Non sono sicuro che questa informazione sia necessaria. Purtroppo non capisco ancora molto bene i numeri. Mi piacerebbe capirlo.


SZY Ci sono due linee nella tabella sopra con lo stesso Line=1093. Forse quali dati di riproduzione fornire nel PM?

 
fxsaber #:

Ci sono solo tre variabili ulong.

E tutti quelli che sono chiamati da questa funzione.

Il tempo di esecuzione della funzione A contiene il tempo di esecuzione di tutte le funzioni B, che sono chiamate da A. Tranne quando B è chiamato da qualche altro posto (allora solo una parte del tempo di B andrà ad A).

 
Andrey Khatimlianskii #:

E tutto ciò che viene chiamato da quella funzione.

Il tempo di esecuzione della funzione A contiene il tempo di esecuzione di tutte le funzioni B, che sono chiamate da A. Tranne quando B è chiamato da qualche altra parte (allora solo una parte del tempo di B andrà in A).

Intendevo la parentesi di chiusura.

 
fxsaber #:

Intendevo la parentesi di chiusura.

Ecco cosa intendevo).

Forse anch'io sto fraintendendo qualcosa.

 

Log del tester (senza visualizzazione) dopo l'esecuzione del profilatore.

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


Subito dopo, il pulsante di avvio del Tester viene premuto a mano.

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. Perché il tempo di esecuzione è tre volte più lungo durante il profiling?
  2. Perché il consumo di memoria è tre volte superiore durante la profilazione?
 

Il profiler mostra chiamate di funzioni che non sono realmente avvenute. Mi sono anche imbattuto in qualcosa del genere:

Una specie di ArrayCopy, che non è nel sorgente mqh-file! Ho anche disegnato una linea rossa nella dichiarazione di un array statico.

Non posso ancora usare il profiler, purtroppo.

Motivazione: