3

在我的一个 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吗?

4

2 回答 2

3

您需要添加编译器标志--stackTrace:on,否则将没有任何函数名或行号来分析。

于 2019-07-08T15:58:47.970 回答
2

1.0e+02% 只是说 100% 的愚蠢方式。它说它需要很多堆栈样本,而且它们都是一样的,这并不奇怪。

您需要的是实际查看示例。它应该出现在上面的行下方。它会告诉你问题是什么。

顺便说一句,它应该显示行号以及函数名称,并且不应该只按频率对堆栈进行排序。原因是很容易在大部分堆栈上存在有罪的代码行,即使堆栈在其他方面不同,因此如果堆栈已排序,则该行将不会被聚合。

于 2015-07-25T13:08:13.527 回答