首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >分析球拍代码的详细指南

分析球拍代码的详细指南
EN

Stack Overflow用户
提问于 2014-06-02 06:22:15
回答 1查看 1.1K关注 0票数 6

做了一些谷歌(“球拍剖析”,“球拍测量性能”),但没有找到任何,没有在文档中的例子。甚至谷歌的“个人资料”搜索在htdp上-没有运气。除了用于小片段之外,(profile (f ...))输出没有那么明显。

理想情况下,我希望类似于python的python -m cProfile使用示例。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-02 13:09:16

当我搜索"Python“时,DuckDuckGo和Google都给出了这样的结果:26.4.Python分析器

(虽然我扫描得很快,但它似乎更像是一个参考,而不是一个“彻底的使用指南”的例子。所以,如果你有其他的想法,也许你可以链接到它?)

同等的球拍文档应该是:资料简介:统计资料

一个用法示例:

代码语言:javascript
运行
复制
#lang racket
(require profile)
(profile-thunk (thunk (function-to-profile arg0 arg1) ))

在这里,(thunk e)只是(lambda () e)的一个方便。

更大的例子:

代码语言:javascript
运行
复制
#lang racket

(module mod racket
  (provide f)
  (define (f)
    (for/list ([i 10000])
      i)))

(require (prefix-in mod: 'mod))

(define (f)
  (for ([i 10000])
    (mod:f)))

(require profile)
(profile-thunk f)

对我来说,这一产出:

代码语言:javascript
运行
复制
Profiling results
-----------------
  Total cpu time observed: 5666ms (out of 5753ms)
  Number of samples taken: 105 (once every 54ms)

========================================================
                               Caller
Idx   Total        Self      Name+src             Local%
      ms(pct)      ms(pct)     Callee
========================================================
[1] 5666(100.0%)    0(0.0%)  [running body] /tmp/profile.rkt:##f
                               profile-thunk14 [2]100.0%
--------------------------------------------------------
                               [running body] [1] 100.0%
[2] 5666(100.0%)    0(0.0%)  profile-thunk14 ...e-pkgs/profile-lib/main.rkt:9:0
                               run [3]            100.0%
--------------------------------------------------------
                               profile-thunk14 [2]100.0%
[3] 5666(100.0%)    0(0.0%)  run ...pkgs/profile-pkgs/profile-lib/main.rkt:31:2
                               for-loop [4]       100.0%
--------------------------------------------------------
                               run [3]            100.0%
[4] 5666(100.0%) 1630(28.8%) for-loop /tmp/profile.rkt:12:2
                               f [5]               71.2%
--------------------------------------------------------
                               for-loop [4]       100.0%
[5] 4036(71.2%)  1786(31.5%) f /tmp/profile.rkt:5:2
                               for-loop [6]        55.8%
--------------------------------------------------------
                               f [5]              100.0%
[6] 2250(39.7%)  2250(39.7%) for-loop /tmp/profile.rkt:6:4
--------------------------------------------------------

请注意,它确实显示了行号,因此即使有两个名为f的函数,也可以看到哪个1实际上是每个1的哪个部分。

此外,我强烈建议使用优化教练包。虽然这将给您提供与传统分析器不同的洞察力,但它也给出了如何更改代码以可能更快的具体建议。作为一种副产品,它教会你如何在一开始就这样写它。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23988370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档