栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何分析我的代码?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何分析我的代码?

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

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

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

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

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

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

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

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

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



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/645135.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号