Как использовать Нимпроф?
В одном из моих проектов Nim у меня проблемы с производительностью. Я сейчас пытаюсь использовать nimprof
чтобы увидеть, что происходит. у меня есть import nimprof
в моем основном исходном файле, и я собираю с --profiler:on
, Когда я запускаю программу, я вижу сообщения:
writing profile_results.txt...
... done
Тем не мение, profile_results.txt
содержит только это:
total executions of each stack trace:
Entry: 1/1 Calls: 2741/2741 = 1.0e+02% [sum: 2741; 2741/2741 = 1.0e+02%]
Время выполнения составляло около 1 минуты - так что я не думаю, что просто недостаточно времени, чтобы что-то попробовать. Есть ли способ получить что-то более значимое из nimprof
?
1 ответ
Вам нужно добавить флаг компилятора --stackTrace:on
, или не будет никаких имен функций или номеров строк для анализа.
1.0e+02% - это просто глупый способ сказать 100%. В нем говорится, что потребовалось много стековых образцов, и все они были одинаковыми, что неудивительно.
Что вам нужно, так это увидеть образец. Это должно появиться ниже линии выше. Он покажет вам, в чем проблема.
Помимо этого, он должен показывать номера строк, а также имена функций, и он не должен просто сортировать стеки по частоте. Причина в том, что может легко быть виновная строка кода, которая находится на большой части стеков, даже если стеки иначе различаются, поэтому, если стеки отсортированы, эта строка не будет агрегирована.