Como criar um perfil de um programa Erlang em termos de uso de memória?
Eu gostaria de melhorar ainda mais a eficiência de um programa Erlang existente. Primeiro, gostaria de identificar gargalos e depois decidir onde otimizar ainda mais.
Eu tenteifprof
, mas fornece apenas informações sobre o tempo de execução total e médio. Eu gostaria muito de ver um log semelhante à saída do fprof, mas em termos de uso médio e total de memória em relação a funções e processos.
Para iniciantes, seria suficiente criar um perfil para um único módulo, que não gera processos, apenas suas funções seriam chamadas. Isso já ajudaria, pois eu poderia separar o programa em módulos distintos para teste.
São pontos suspeitos típicos, onde listas maiores estão sendo manipuladas.
Aqui o uso de++
foi resolvido porlists:reverse([Head|Tail])
como sintaxe.
Também estou pensando em usar tabelas ETS em vez de Listas para casos com mais de algumas centenas de elementos.
Agradeço antecipadamente!