Ao abrir uma rotina MVC - Modelo X com muitos elementos - 3 Grids, 1 Form, botões para usar em 2 grids, mensagem de rodapé leva cerca de 9 segundos. No segundo acesso é de cerca de 6 segundos.
Já foi utilizado Caches SetCacheView(.T.)
no FwMBrowse
da tela principal. E no model já foi utilizado SetOnDemand()
.
Tabelas Envolvidas já possuem índices adequados, porém no caso as tabelas envolvidas estão quase vazias (Não se trata de volume de dados nas tabelas).
Ambiente Avaliado: ORACLE 19C, Binários Atualizados, Release 2310 (Dicionário no Banco de Dados), Usando VPN FortClient, Internet de 600Mpbs, Ping Médio de 22ms, Latência SmartClient x AppServer 31/32 milisegundos (Medido pela função ADVPL Ping ).
** Seria possível melhorar o desempenho de abertura de rotinas MVC para cerca de 2 segundos?
O que seria mais adequado observar e avaliar?
A única maneira de melhorar o desempenho é remover campos e objetos da Tela MVC? Tirando o aspecto de infraestrutura (BD, Servidores, Rede, VPN), pela linguagem existe algo que poderia ser feito? **
Gera um logprofiler, é possível ler o mesmo para identificar os pontos de lentidão. Além disso, verifica como fica o resultado do MallocIO desse servidor.
— Daniel Mendes 11 de Mar de 2024Daniel, obrigado pelo Retorno.
Sobre o MallocIO o time de infra retornou que retorna condições boas do Servidor.
LogProfiler não foi utilizado porque é algo que ocorre em todas as rotinas MVC mais complexas (Por isso a pergunta se existe algo no código ADVPL que pode ser feito para melhorar) - não ocorre em apenas rotinas MVCs específicas.
Validando pelo SmartClient HTML com WebAgent a performance se mostrou totalmente diferente. Foi percebido que o acesso inicial do browse caiu de 30 segs para 20 segs. E o acesso aos detalhes da rotina MVC caiu de 7-9 segs para 2 segs como esperado.
— Carlos Eduardo Niemeyer Rodrigues 12 de Mar de 2024Realmente esse problema de lentidão nas telas MVC eu também observei, é algo geral do MVC, qualquer tela com mais elementos fica bastante pesada para carregar, e se for complexa com 4, 5, 6 ou mais elementos de dados então leva uns 10 seg para carregar. Isso piora absurdamente com conexões mais lentas, parece ser algo que sobrecarrega a comunicação entre o smartclient e o servidor, não é um problema de performance da aplicação em si, algo de comunicação, vejo muito espaço para melhorar esse problema, alguma otimização na comunicação entre o servidor e o client deve reduzir muito esse problema.
— Cirilo Rocha 16 de Mar de 2024