做了一些谷歌搜索("球拍分析","球拍测量表现"),但没有找到任何,文档中没有例子.甚至谷歌"个人资料"搜索htdp- 没有运气.(profile (f ...))除了小片段之外,输出并不是那么明显.
理想情况下,我想要像python的python -m cProfile用法示例.
Gre*_*ott 11
当我搜索"Python分析"时,DuckDuckGo和Google都将此作为最佳结果:26.4.Python Profilers.
(虽然我很快就扫描了它,但它似乎更像是一个参考而不是一个带有例子的"彻底的使用指南".所以,如果你有别的想法,或许你可以请链接到那个?)
等效的Racket文档将是:Profile:Statistical Profiler.
一个用法示例:
#lang racket
(require profile)
(profile-thunk (thunk (function-to-profile arg0 arg1) ))
Run Code Online (Sandbox Code Playgroud)
这里(thunk e)只是一个方便(lambda () e).
更大的例子:
#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)
Run Code Online (Sandbox Code Playgroud)
对我来说这个输出:
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
--------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
请注意,它确实显示行号,因此即使有两个命名的函数f,也可以看到哪一个 - 实际上是每个函数的哪一部分.
另外,我强烈推荐优化教练包.虽然这会为您提供与传统分析器不同的见解,但它也为您提供了如何更改代码以获得更快的具体建议.作为副产品,它教你如何以这种方式编写它.