Analiza rendimiento en Business Central
Bienvenidos bibliotecarios, a una nueva entrada😁. Hoy aprenderemos a analizar el rendimiento de nuestra instancia de Business Central. Esto puede ser bastante útil cuando una página tarda demasiado tiempo en abrirse o un proceso tarda demasiado en completarse. ¿Qué es lo que está haciendo que tarde tanto?.
Con esta herramienta veremos todas las funciones del código estándar y del personalizado que se ejecutan en nuestro proceso, además de ver cuando tiempo tarda en ejecutarse cada una de ellas. Para hacer este ejemplo lo primero que necesitamos es hacer un código que no sea especialmente optimo 😎.
En mi caso voy ha hacer que en el OnOpenPage, y justo después en el OnAfterGetRecord de mi página de Customer Card (page 21 «Customer Card») se ejecute un proceso que recorra la tabla Integer (table 2000000026 Integer) hasta el registro nueve millones. Esto hará que nuestra página tarde más de lo habitual en abrirse.
Os dejo el código de mi ejemplo a continuación:
report 50000 "BBC Slow Down Performance"
{
UsageCategory = None;
ApplicationArea = All;
ProcessingOnly = true;
Caption = 'Slow Down Performance', Comment = 'ESP="Ralentizar rendimiento"';
UseRequestPage = false;
dataset
{
dataitem(Integer; Integer)
{
DataItemTableView = sorting(Number) where(Number = filter(1 .. 9000000));
trigger OnPreDataItem()
begin
Window.Open(
Text000Lbl +
Text001Lbl);
end;
trigger OnAfterGetRecord()
begin
Window.Update(1, Format(Integer));
end;
trigger OnPostDataItem()
begin
Window.Close();
end;
}
}
var
Window: Dialog;
Text000Lbl: Label 'Generando informe...\\';
Text001Lbl: Label 'Registro #1###############\';
}
pageextension 50000 "BBC Customer Card" extends "Customer Card"
{
trigger OnOpenPage()
var
BBCSlowDownPerformance: Report "BBC Slow Down Performance";
begin
Clear(BBCSlowDownPerformance);
BBCSlowDownPerformance.Run();
end;
trigger OnAfterGetRecord()
var
BBCSlowDownPerformance: Report "BBC Slow Down Performance";
begin
Clear(BBCSlowDownPerformance);
BBCSlowDownPerformance.Run();
end;
}
Una vez publicados estos cambios veremos al intentar abrir un cliente, tarda mucho más. Así que vamos a analizar el rendimiento para ver el porque sucede este problema. Arranquemos el analizador de sistema de Business Central:
- Clicamos en el símbolo de ayuda de Business Central:
- Pulsamos en la opción de «Ayuda y soporte técnico»:
- Y seleccionamos la opción de «Analizar rendimiento»:
Al clicar se nos abrirá una nueva ventana con la que controlaremos la grabación de por donde ha pasado Business Central.
- Pulsamos el botón de iniciar y replicamos el error de rendimiento. En nuestro caso pulsamos iniciar y vamos a abrir una ficha de cliente:
- Al finalizar nuestro recorrido pulsamos en «Detener» y nos mostrará cuanto tiempo a estado activa cada extension:
- Ahora marcaremos el check de mostrar información técnica para poder obtener más detalle:
En nuestro caso, cuando bajemos y encontremos la sección del tiempo empleado por objeto de aplicación, veremos que el causante del mal rendimiento en nuestro Business Central es el código que hemos añadido anteriormente, en mi caso llegando a ralentizar el proceso de apertura de la page en 13’44 segundos😯.
Una vez localizado el problema iríamos a la función causante del mal rendimiento y trataríamos de optimizarla. Puede que no os pase un caso tan exagerado como este, pero si nuestra función tarda unos segundos en completar la ejecución no estaría mal echarle un ojo para ver si fuse posible optimizarla 😜.
Creo que esta herramienta es super importante ya que nadie es perfecto, y a veces podemos hacer código que no está todo lo optimizado que se podría. Al fin y al cabo el rendimiento es algo esencial, es desesperante cada vez que hacemos click tener que esperar 3 o 4 segundos para que una página se abra.
Ahora te toca a ti😁.
Si tenéis algún tipo de duda no dudéis en dejar vuestro comentario.
¡Un saludo!
LA BIBLIOTECA DE BC
Funciona 100%!!!
Gran paso a paso facil de entender!!
Muchas gracias Sergio😁
Muy bien explicado todo y facil de entender, gracias por la guía, era justo lo que estaba buscando!
Muchas gracias Francisco.
Me alegra que te haya servido el post.
¡Un saludo! 😁
Muy buena utilidad cuando no sabes el porqué de la lentitud en alguna consulta.
Gracias Diego.
Me alegra que te haya servido de ayuda el post😁.
¡Un salduo!