gpt4 book ai didi

profiling - 完整的 Racket 代码配置指南

转载 作者:行者123 更新时间:2023-12-04 17:09:41 25 4
gpt4 key购买 nike

做了一些谷歌搜索(“ Racket 分析”,“ Racket 测量性能”),但是没有找到任何东西,并且文档中也没有示例。甚至Google的“个人资料”都在htdp上进行了搜索-祝您好运。除了小片段以外,(profile (f ...))的输出并不明显。

理想情况下,我想要类似python的python -m cProfile用法示例的内容。

最佳答案

当我搜索“Python分析”时,DuckDuckGo和Google都将其作为最高结果:26.4. The Python Profilers

(尽管我很快进行了扫描,但它似乎比起带有示例的“详尽的使用指南”,更像是引用。因此,如果您有其他想法,也许可以链接到它?)

等效的Racket文档为:Profile: Statistical Profiler

一个用法示例:

#lang racket
(require profile)
(profile-thunk (thunk (function-to-profile arg0 arg1) ))

这里 (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)

对我来说,输出:
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的函数,也可以看到其中一个-实际上是每个部分的哪一部分。

我也强烈推荐 Optimization Coach软件包。尽管这将为您提供与传统探查器不同的见解,但它还为您提供了有关如何将代码更改得更快的具体建议。作为副产品,它教您如何首先以这种方式编写它。

关于profiling - 完整的 Racket 代码配置指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23988370/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com