Как профилировать программу Erlang с точки зрения использования памяти?
Я хотел бы еще больше повысить эффективность существующей программы Erlang. Сначала я хотел бы выявить узкие места, а затем принять решение о дальнейшей оптимизации.
Я пробовалfprof
, но он дает только информацию об общем и среднем времени выполнения. Мне больше всего хотелось бы видеть журнал, похожий на вывод fprof, но с точки зрения среднего и общего использования памяти в отношении функций и процессов.
Для начала было бы достаточно профилировать один модуль, который не порождает процессы, только его функции будут вызываться. Это уже помогло бы, поскольку я мог разделить программу на отдельные модули для тестирования.
Типичные подозрительные моменты - когда обрабатываются большие списки.
Здесь использование++
был решенlists:reverse([Head|Tail])
как синтаксис.
Я также рассматриваю возможность использования таблиц ETS вместо списков для случаев с несколькими сотнями элементов.
Заранее спасибо!