Muitas vezes os sistemas são desenvolvidos sem a preocupação com o desempenho da aplicação, porém este é um ponto importante em se tratando de aplicações corporativas onde escalabilidade e confiabilidade são atributos imprescindíveis.
Pode-se melhorar a performance dos fluxos de diversas formas, neste tópico serão mostrados algumas das principais modificações que podem ser aplicadas ao desenvolvimento para garantir um melhor desempenho da aplicação.
Substituir função Concatenação por Append
Às vezes existe a necessidade de concatenar strings em nossos sistemas. Para concatenações simples, pequenas, não seriam notórias a diferença em usar uma ou outra função. Em uma situação onde seria necessário concatenar 100000000 caracteres por diversas vezes no mesmo fluxo, utilizando a função de Concatenação, todos os caracteres seriam carregados em memória, podendo causar uma lentidão ou travamento do sistema. Utilizando a função Append, ao invés de sempre carregar a string na memória, ele criará um apontador para aquela string, sendo somente alocado em memória o índice que foi criado para a mesma.
Abaixo, temos um exemplo de como realizar a troca das funções Concatenação para Append:
Utilizando Try-Catch e funções de Semáforo
Uma exceção é um sinal que indica que algum tipo de condição excepcional que ocorreu durante a execução do programa. Assim, exceções estão associadas a condições de erro que não tinham como ser verificadas durante a compilação de um fluxo.
A utilização das funções Monitorar Exceções (TRY) e Capturar Exceções (CATCH) tem por objetivo evitar essa quebra, interrupção de execução de uma determinada regra e evitando travamentos e perda de desempenho no sistema.
Quando utilizamos semáforo evitamos a condição de concorrência dentro da aplicação, porém caso ocorra uma falha no meio da execução do processo que o obtém, a execução da regra será interrompida e o semáforo não será liberado, ocasionando um travamento da aplicação. Por isso uma das recomendações para melhoria de desempenho é a utilização de semáforos com try-catch, pois assim quando houver uma situação semelhante a supracitada, tais interrupções não ocorrerão. Veja o exemplo abaixo:
Desta forma se ocorrer alguma falha na execução da regra o semáforo não ficará travado, pois a exceção será capturada e logo em seguida liberando o semáforo.
Agendar execução de fluxo sem pai
A utilização desta função para agendar a execução de regras ajuda a melhorar o desempenho da aplicação, pois evita que seja formada pilha de chamadas, consumindo menos memória pelo fato de que o fluxo agendado não tem nenhum vinculo com o fluxo chamador.