如何分析我的代码?

发布于 2021-01-29 17:59:01

我想知道如何分析我的代码。

我已经阅读了文档,但是由于没有给出示例,因此无法获得任何帮助。

我的代码很大,需要很多时间,因此我想介绍一下它并提高其速度。我没有用方法编写代码,介于两者之间但很少。我的代码中没有任何主要内容。我想知道如何使用分析。我正在寻找有关如何配置文件的一些示例或示例代码。

我尝试了psyco,即在代码顶部添加了两行:

import psyco
psyco.full()

这是正确的吗?它没有显示任何改善。还有其他加快方法,请提出建议。

关注者
0
被浏览
50
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    这个问题的标准答案是使用cProfile

    不过,您会发现, 如果不将代码分成方法,则cProfile不会为您提供特别丰富的信息

    取而代之的是,您可能想尝试一下这里的另一张海报,称为“ 蒙特卡洛概况”
    。引用另一个答案:

    如果您急于 在主观上很慢的情况 下在调试器下手动中断程序 ,则有一种简单的方法可以查找性能问题。

    暂停几次,每次查看调用堆栈。 如果有一些代码浪费了一定百分比的时间(20%或50%或其他),那么这就是您在每次采样时都将其捕获的概率。
    因此,这大约是您将看到样品的百分比。不需要有根据的猜测。如果您确实怀疑问题出在哪里,这将证明或不证明它。

    您可能会遇到多个不同大小的性能问题。如果您清除其中任何一个,其余的将在以后的传递中占更大的比例,并且更容易发现。

    警告:除非他们自己使用过,否则程序员往往会对这种技术持怀疑态度。他们会说分析器会为您提供此信息,但是只有在他们对整个调用堆栈进行采样的情况下,这才是正确的。调用图不会为您提供相同的信息,因为1)它们没有在指令级别上进行汇总,2)在存在递归的情况下它们给出了令人困惑的摘要。他们还会说,它实际上仅对玩具程序有效,而实际上对任何程序都有效,并且似乎在较大的程序上效果更好,因为他们往往会发现更多的问题[
    重点 ]。

    它不是正统的,但是我在一个使用cProfile进行分析无法提供有用输出的项目中非常成功地使用了它。

    最好的是,这在Python中很容易做到。只需在解释器中运行Python脚本,按[Control-C],记下回溯并重复多次。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看