Caros,
Estou em um projeto onde existem diversas filiais e os funcionários da matriz fazem tudo por uma determinada empresa, ou seja, usamos muitos formulários com o CrossCompany habilitado, também com métodos display e etc… tudo que torna um formulário demorado!
Tendo em vista este problema, comecei uma saga para tentar melhorar a performance e logo no inicio eu percebi que se eu limitasse o tamanho do grid exibido, o formulário melhorava drasticamente sua performance, ou seja, ao invés de deixar o grid com tamanho Automático, eu coloquei 350px e o que antes levava quase 15 segundos para abrir, passou a abrir em 9 segundos e as vezes 10, a melhoria foi notada muito facilmente!
Legal, até ai já tinha melhorado bastante, mas foi o suficiente para ver que o problema era em relação a “renderização” dos grids, e sendo assim, era ali que devia trabalhar!
Depois disso, estudando o comportamento das Grids, eu vi o método autoSizeColumns, que quando false, trazia uma performance melhor ainda, ao formulário que levava 15 segundos, passou a levar 4 ou 5 para abrir!
Logo em seguida, alguns usuários passaram a reclamar que quando tentavam abrir o formulário, o ax estava fechando, e percebi que devido as diferenças de instâncias (versão do ax e também do client) era gerado uma exceção, foi então que adicionei o código para verificar se o método estava implementado.
Em resumo, o que deve ser feito:
Formulário -> Grid -> Propriedade AutoDeclaration = yes;
Formulário -> Método init:
1 2 3 4 5 6 7 8 9 10 11 | public void init() { ; super(); //PICHLER - improve performance - BEGIN if ( new SysDictClass(classNum(FormGridControl)).hasObjectMethod(identifierStr(autoSizeColumns)) ) { OverviewGrid.autoSizeColumns(false); } //PICHLER - improve performance - END } |
Pronto, agora pode colocar isso em todos os formulários! Se alguém quiser fazer isso para todos, sobrescrevam o método init da classe SysSetupFormRun, e adicionem o código, mas ai lembrem-se que vocês nunca saberão o nome da grid, ou seja, algumas validações serão necessárias!
Abraço,
Pichler
3 Responses
Alexssander Valdoski
09|May|2011 1Muito bom, melhorou muito mesmo o ambiente de produção!
Michael Guedes
08|Jun|2011 2Excelente Pichler, precisei fazer uma formulario que precisava carregar 31 campos em tab´s separadas, como teste eu deixei num Grid e cronometrei a performace, normal do Ax ficou em 31 segundos e com a alteração caiu para 15.. que foi espectacular… dica show de bola. !!!
Alfredo Wagmacker
06|Sep|2011 3Pichler… Show de bola!
Abraço!
Leave a reply