【问题标题】:measure performance of a common-lisp program衡量一个 common-lisp 程序的性能
【发布时间】:2012-08-26 08:57:58
【问题描述】:

我写了一个 common-lisp 程序,它比它需要的要慢。现在我想分析我的代码,看看我的时间都花在了哪里。有没有人们使用的工具?

【问题讨论】:

    标签: performance common-lisp


    【解决方案1】:

    如果您使用的是SLIME,除了time 和特定于实现的工具之外,您还可以使用一些profiling commands

    使用M-x slime-toggle-profile-fdefinition(取消)配置特定功能,M-x slime-profile-report 显示结果,M-x slime-profile-reset 用于重置。

    【讨论】:

      【解决方案2】:

      如果您使用的是 SBCL,则可以使用简洁的统计分析器 - http://www.sbcl.org/manual/Statistical-Profiler.html

      对于简单的测量,您可以使用time,它适用于所有 Common Lisp 实现。

      【讨论】:

      • 我喜欢 sb-sprof 包。它提供了所有被调用的函数(包括系统函数) 我的问题是我无法真正看到其中一些函数被调用的位置。在 common lisp 中是否有任何逐行分析器实现(类似于 python 内存分析器可能github.com/fabianp/memory_profiler)这是一个示例 python 代码及其 memmory_profiler 结果gist.github.com/3235444。有了这个,我可以更改序列类型并查看内存结果。它并没有特别显示瓶颈,但对于查找类型相关的问题非常有用。
      • 另外,如果您使用的是 SBCL,请确保您执行文件(或完整系统)编译并通读编译器说明的全部内容。里面可能有一些效率说明。
      • @yilmazhuseyin SBCL 也有一个deterministic profiler,但它仍然是面向函数的,而不是面向行的(没用过)。要查看谁调用了某个函数,可以在函数名上使用 SLIME 的C-c C-w c(SLIME 有很多有用的cross reference commands)。
      猜你喜欢
      • 2012-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多