Acerca del perfilador de código de MT5 - página 6

 
fxsaber #:

No entiendo por qué no se tienen en cuenta las cuerdas del 45% y el resto?

Incluyen esas funciones nativas, cuya carga ya escribí.

RefreshHistory consiste en HistorySelect y HistoryOrderGet, GetHistoryPositionData - de ellos + HistoryDealGet.

También ayuda recorrer el código con los ojos y analizar las líneas más rojas. Sin embargo, no siempre se resaltan, si el código es algo más complejo que una hoja.

 
fxsaber #:

El 29,41% (no está claro por qué) se debe a un tramo de cierre tras la devolución. Difícil de interpretar.

Eliminación de variables de función locales, objetos locales, etc.

Esto se hace después de cualquier retorno de la función.

 
Andrey Khatimlianskii #:

Eliminación de variables de función locales, objetos locales, etc.

Esto se hace después de cualquier retorno de la función.

Sólo hay tres variables ulong.

 
fxsaber #:

Se ha añadido una repetición de 20x en la gran historia.

El 29,41% (no está claro por qué) se debe a un paréntesis de cierre en el método ya después del retorno. Difícil de interpretar.

¿Qué hay en el informe de esta función?

¿Puede mostrarme por favor

 
Ilyas #:

¿Qué contiene el informe de esta función?

Por favor, muéstrame

Informe del Perfilador MQL - \MQL5\Experts\Test19.mq5
Función Línea Total de la CPU Porcentaje Auto CPU Porcentaje
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%


No estoy seguro de que esta información sea necesaria. Desgraciadamente, todavía no entiendo muy bien los números. Me gustaría entenderlo.


SZY Hay dos líneas en la tabla anterior con la misma Line=1093. ¿Tal vez qué datos de reproducción proporcionar en el PM?

 
fxsaber #:

Sólo hay tres variables ulong.

Y todo lo que se llama desde esta función.

El tiempo de ejecución de la función A contiene el tiempo de ejecución de todas las funciones B, que son llamadas desde A. Excepto cuando se llama a B desde otro lugar (entonces sólo parte del tiempo de B irá a A).

 
Andrey Khatimlianskii #:

Y todo lo que se llama desde esa función.

El tiempo de ejecución de la función A contiene el tiempo de ejecución de todas las funciones B, que son llamadas desde A. Excepto cuando se llama a B desde otro lugar (entonces sólo una parte del tiempo de B irá a A).

Me refería al paréntesis de cierre.

 
fxsaber #:

Me refería al paréntesis de cierre.

A eso me refería).

Tal vez yo mismo esté malinterpretando algo.

 

Registro del probador (sin visualización) tras la ejecución del perfilador.

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


Inmediatamente después se pulsa a mano el botón de inicio en el probador.

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. ¿Por qué el tiempo de ejecución es tres veces mayor durante la elaboración de perfiles?
  2. ¿Por qué el consumo de memoria es tres veces mayor durante la elaboración de perfiles?
 

El perfilador muestra llamadas a funciones que en realidad no han ocurrido. Incluso me he encontrado con algo así:

Algún tipo de ArrayCopy, ¡que no está en la fuente del archivo mqh! Incluso he dibujado una línea roja en la declaración de un array estático.

Por desgracia, todavía no puedo utilizar el perfilador.

Razón de la queja: