Я пытаюсь профилировать мою программу.Поэтому я компилирую его с флагами -prof
и -auto-all
и запускаю с -P
, чтобы получить подробный отчет о профилировании:
$ ghc --make -prof -auto-all Test.hs
$ ./Test +RTS -P
Вот часть отчета о профилировании:
COST CENTRE MODULE no. entries %time %alloc
main Main 266 1 0.0 0.0
run Main 273 21845 99.3 99.7
sz Main 274 21844 0.0 0.0
size Main 268 21845 0.7 0.3
Кажется, что run
потребляет все время и память.Он вызывает множество функций из разных библиотек, и я совершенно уверен, что большая часть времени тратится на одну из них, но я не могу понять, в какой именно.Как я могу получить более подробный отчет?Я надеюсь, что установка большого количества аннотаций SCC
вручную - не единственный способ.
Обновление .Пока что я «решил» проблему, скопировав исходники библиотек в каталог моей программы.Это позволяет GHC рассматривать их как часть программы, а не как внешние библиотеки.